cordova-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Steven Wexler (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (CB-9256) Errors in subscribed event callbacks prevent other subscribed callbacks from being invoked
Date Tue, 21 Jul 2015 07:06:04 GMT

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

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

Any updates here?

> 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


Mime
View raw message