You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@cordova.apache.org by "Steven Wexler (JIRA)" <ji...@apache.org> on 2016/08/15 19:21:22 UTC

[jira] [Commented] (CB-9256) Errors in subscribed event callbacks prevent other subscribed callbacks from being invoked

    [ https://issues.apache.org/jira/browse/CB-9256?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15421509#comment-15421509 ] 

Steven Wexler commented on CB-9256:
-----------------------------------

lol

> 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: CordovaJS
>            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
> {code}
> document.addEventListener("deviceready", function () { throw new Error("oops"); });
> document.addeventListener("deviceready", function () { /*never hit*/ });
> {code}
> 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
> {code}
> for (var i = 0; i < toCall.length; ++i) {
>   toCall[i].apply(this, fireArgs);
> }
> {code}
> Should be something like:
> {code}
> 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) {
>   (function (arg) {
>     setTimeout(function () { throw errors[arg]; });
>   })(j);
> }
> {code}



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

---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscribe@cordova.apache.org
For additional commands, e-mail: issues-help@cordova.apache.org