Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/vim/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在承诺链中等待所有承诺_Javascript_Promise - Fatal编程技术网

Javascript 在承诺链中等待所有承诺

Javascript 在承诺链中等待所有承诺,javascript,promise,Javascript,Promise,有没有一种方法可以在承诺链中等待所有承诺?我发现了Promise.all()函数用于等待一系列承诺,但我无法让它工作 我有一个大概是这样的 var returnPromise2; var returnPromise1 = function1ThatReturnsAPromise.then( function onSuccess(array) { console.log("First function finished"); }).then( function (va

有没有一种方法可以在承诺链中等待所有承诺?我发现了Promise.all()函数用于等待一系列承诺,但我无法让它工作

我有一个大概是这样的

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获得值,但不能从第二个得到值。问题是在返回时,
returnPromise2
仍然为空

任何关于如何实现这一点的技巧都值得赞赏。

当在
处理程序中时。然后()
如果您希望将其链接到链中并使其价值成为实现的价值,则必须返回承诺

虽然从你的问题上我并不完全清楚你想要实现什么,但似乎你想做的是:

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
});
如果您想从多个承诺中积累价值,那么有几种不同的设计模式。以下是之前的答案,展示了几种不同的方法


添加了对其他答案的参考,说明如何累积结果。谢谢,我将尝试一下,如果这不是我想做的,请重新计算问题。