javascript - when.all() 2.2.1 in cujojs doesn't reject if one deferred rejected -


i having trouble working out why promise being fulfilled when documentation says should rejected.

open http://jsbin.com/orifok/5/edit , click go button, , alerts "ok" when should alert "fail".

replace when221.all... deferred2.promise.then(stepfulfilled, steprejected); , rejection occurs.

i did make modification when.js code make when221 variable global, rather needing dependency upon require.js library (see http://pastebin.com/j8wcqjwm compared original https://github.com/cujojs/when/blob/2.2.1/when.js).

when.all() documentatation says: if of promises rejected, returned promise rejected rejection reason of first promise rejected - see https://github.com/cujojs/when/blob/master/docs/api.md#whenall

tl;dr: when.all must passed promise, not deferred, , programmer needs careful not make mistake.

brian cavalier answered here: https://github.com/cujojs/when/issues/172 , modified code here: http://jsbin.com/orifok/10/edit

the answer follows:

hi, example code passes deferred objects when.all. deferred objects not promises. unfortunately, libraries, such jquery, , admittedly, earlier versions of when.js, conflate promises , deferred objects. try clarify, i've started referring deferred objects pair {resolver, promise}. should pass promises, not deferred objects, when.all.

here's revised version of example work expect:

(function(){ var deferred1 = when221.defer(); var deferred2 = when221.defer();  window.clickgo = function() {   // pass promise, not deferred   when221.all([deferred1.promise, deferred2.promise]).then(stepfulfilled, steprejected);   deferred2.reject('foooo'); };  function stepfulfilled() {     alert('ok'); }  function steprejected(failed) {     alert('failed ' + failed); }  })(); 

note when,js >= 2.2.0 has new, lighter weight promise creation api when.promise, i've started recommending on when.defer. suited different situations, i've found prefer of time.

hope helps!


Comments

Popular posts from this blog

php - Calling a template part from a post -

Firefox SVG shape not printing when it has stroke -

How to mention the localhost in android -