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]