Steven Wexler created CB-9256:
---------------------------------

             Summary: Errors in subscribed event callbacks prevent other 
subscribed callbacks from being invoked
                 Key: CB-9256
                 URL: https://issues.apache.org/jira/browse/CB-9256
             Project: Apache Cordova
          Issue Type: Bug
          Components: CordovaLib
            Reporter: Steven Wexler


Let's say I register two callbacks for the "deviceReady" event before the event 
fires.  If the first callback hits an error, the second callback will not be 
invoked

document.addEventListener("deviceready", function () { throw new Error("oops"); 
});
document.addeventListener("deviceready", function () { /*never hit*/ });

This behavior differs if the events were registered after the event was fired.

I think the following code should handle callbacks that fail:

https://github.com/apache/cordova-js/blob/master/src/common/channel.js#L213

for (var i = 0; i < toCall.length; ++i) {
  toCall[i].apply(this, fireArgs);
}

Should be something like:

var errors = [];
for (var i = 0; i < toCall.length; ++i) {
  try {
    toCall[i].apply(this, fireArgs);
  } catch (e) {
    errors.push(e);
  }
}
for (var j = 0; j < errors.length; ++j) {
  setTimeout(function () { throw errors[j]; });
}








--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to