Side navigation
#15050 closed bug (notabug)
Opened April 24, 2014 12:40PM UTC
Closed April 28, 2014 02:14PM UTC
Deffered callbacks chain brokes after unhadled exception
| Reported by: | Zinoviev | Owned by: | |
|---|---|---|---|
| Priority: | undecided | Milestone: | None |
| Component: | unfiled | Version: | 1.11.0 |
| Keywords: | Cc: | ||
| Blocked by: | Blocking: |
Description
If somewhere inside callbacks from then/done etc occurs exception all other callbacks(either success and fail) - will not be called
var deffered = jQuery.Deferred();
setTimeout(function delayedFn(){
deffered.resolve();
}, 2000);
deffered.done(function(){
throw new Error('Error');
console.log('You never see this');
}).fail(function(err) {
console.log('And this is also not reachable')
});
deffered.done(function(){
console.log('It will be not called');
});
Compared to bluebird/Q - except catch() it call fail()/native Chrome implementation
var promise = new Promise(function (resolve, reject) {
setTimeout(function(){
resolve('ook!');
}, 1000);
});
promise.then(function onResolve(val) {
throw new Error('oops');
}).catch(function(err) {console.log('It will be printed')});
promise.then(function onResolve(){
console.log('It will be also printed');
});
Attachments (0)
Change History (1)
Changed April 28, 2014 02:14PM UTC by comment:1
| resolution: | → notabug |
|---|---|
| status: | new → closed |
Unexpected exceptions in Promise implementations are notoriously hard to debug. Our approach with
$.Deferred()was to assume they are programming errors and should be dealt with via the standard debugging mechanisms such as console messages andwindow.onerrorhandlers. If you prefer the Bluebird or standardPromise, use those instead.