Javascript AngularJS$q:如何连锁承诺,然后在连锁中最后做平行?
我正在尝试链接一系列任务,这将返回一个承诺,即在链的最后执行并行执行。下面的代码不起作用,我想您可以传递任何在“then”中返回承诺的对象。有没有一个合适的方法来实现这一点。多谢各位Javascript AngularJS$q:如何连锁承诺,然后在连锁中最后做平行?,javascript,angularjs,promise,q,Javascript,Angularjs,Promise,Q,我正在尝试链接一系列任务,这将返回一个承诺,即在链的最后执行并行执行。下面的代码不起作用,我想您可以传递任何在“then”中返回承诺的对象。有没有一个合适的方法来实现这一点。多谢各位 var startTask = $q.when ( ); startTasks .then ( validate ) .then ( savePayment ) .then ( refetchPayment ) .then ( saveContactInfo ) .then ( $
var startTask = $q.when ( );
startTasks
.then ( validate )
.then ( savePayment )
.then ( refetchPayment )
.then ( saveContactInfo )
.then ( $q.all ( [ updateStatus, submitOrder ] ) )
.then ( successHandler )
.catch ( errorHandler );
啊哈,$q.all([updateStatus,submitor])
总是返回一个立即解决的承诺
你想做的可能是这样(猜测)
看到区别了吗
[updateStatus,Submitor]
只是一个函数引用数组,调用$q。对一个数组中的非承诺内容执行所有操作时,都会返回一个立即解决的承诺
您需要调用这些函数,因为(我假设)这些函数在调用时返回承诺
$q.all
接受一个承诺数组,并返回一个承诺,当传递给它的所有承诺都得到解决时,该承诺将得到解决。是的,这些函数返回承诺。我尝试了。然后($q.all([updateStatus(),submitor()])
,但它也不起作用。我想我真的需要将$q.all调用封装在一个函数中。感谢您的快速回复,非常感谢。这里有一篇非常好的文章:
.then(function(response) {
return $q.all( [ updateStatus(response), submitOrder(response) ] );
});