AngularJS $q:如何将 promise 链接起来,然后在链条的最后进行并行处理?
AngularJS $q: How to chain promises then do parallel last in the chain?
我正在尝试链接一系列任务,returns 一个承诺,在链的最后并行执行。下面的代码不起作用,我认为你可以传递 returns "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, submitOrder] )
总是 return 立即兑现承诺。
你想做的大概是这样的(猜测)
.then(function(response) {
return $q.all( [ updateStatus(response), submitOrder(response) ] );
});
看出区别了吗?
[updateStatus,submitOrder]
只是一个函数引用数组,对不是承诺的事物数组调用 $q.all
总是 return 一个立即解决的承诺。
您需要调用这些函数,因为(我假设)这些函数在调用时return promises
。
$q.all
采用一系列承诺,return 是一个承诺,当传递给它的所有承诺都得到解决时,它就会解决。
我正在尝试链接一系列任务,returns 一个承诺,在链的最后并行执行。下面的代码不起作用,我认为你可以传递 returns "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, submitOrder] )
总是 return 立即兑现承诺。
你想做的大概是这样的(猜测)
.then(function(response) {
return $q.all( [ updateStatus(response), submitOrder(response) ] );
});
看出区别了吗?
[updateStatus,submitOrder]
只是一个函数引用数组,对不是承诺的事物数组调用 $q.all
总是 return 一个立即解决的承诺。
您需要调用这些函数,因为(我假设)这些函数在调用时return promises
。
$q.all
采用一系列承诺,return 是一个承诺,当传递给它的所有承诺都得到解决时,它就会解决。