有没有办法等待Promise链中的所有承诺?我已经发现了Promise.all()函数来等待一组promises,但我无法做到这一点。
我有一些大致相同的东西
var returnPromise2;
var returnPromise1 = function1ThatReturnsAPromise.then(
function onSuccess(array) {
console.log("First function finished");
}).then( function (value) {
returnPromise2 = function2ThatReturnsAPromise(value);
});
return [returnPromise1, returnPromise2];
所以在我的调用代码中,如果我Promise.all(arrayOfPromises)
,我可以从returnPromise1获取值,但不能获取第二个值。 dillema是在返回时,returnPromise2
仍为空。
有关如何处理此问题的任何提示。
答案 0 :(得分:3)
当在.then()
处理程序内部时,如果您希望将其链接到链中并使其值成为已实现的值,则必须返回一个承诺。
虽然我从你的问题中并不完全清楚你想要实现的目标,但似乎你想要做的就是:
function1ThatReturnsAPromise().then(function(array) {
console.log("First function finished");
return array;
}).then(function(value) {
return function2ThatReturnsAPromise(value);
}).then(function(finalValue) {
// you can process the finalValue here which will be the last
// value returned or the fulfilled value of the last promise returned
});
如果你想累积来自多个承诺的值,那么有几种不同的设计模式。以下是先前的答案,显示了几种不同的方法。
Chaining Requests and Accumulating Promise Results
How do I access previous promise results in a .then() chain?