只是想了解它是如何$q.all()
工作的:
在我的示例中,我$q.all()
用来执行 2 个函数(都有意返回reject()
),我希望 中的fail
处理程序then()
被调用,但它没有,为什么会这样?
代码:
var myApp = angular.module('myApp',[]);
function MyCtrl($scope,$q) {
f1 = function(){
return $q.defer().reject();
}
f2 = function(){
return $q.defer().reject();
}
s = function(){alert('success!'); };
f = function(){alert('failed!');};
$q.all([f1(),f2()]).then(s,f);
}
小提琴:
http://jsfiddle.net/sajjansarkar/ADukg/10942/
编辑 :
如果我让函数返回原始承诺并在拒绝之前引入延迟,我发现相同的代码有效。
应该:
f2 = function(){
var p = $q.defer();
p.reject();
return p.promise;
}
或者
f2 = function() {
return $q.reject()
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句