动态数组承诺序列

6 javascript node.js promise ecmascript-6 q

我正在动态地创建承诺(每个运行时每个承诺的数量可以改变)的promise数组,现在我希望在每次resolve或reject之后在 promises数组完成之前处理返回的promise 。

我尝试全部兑现,但在所有兑现完成后仍会继续。

如果(promise)的数组不是动态的,那么我可以简单地使用类似这样的方法,但是我不知道我在数组中有多少promise,并且我希望在每个promise履行之后,或者...继续它的答案而不是等到所有的承诺将会完成

firstMethod()
   .then(secondMethod)
   .then(thirdMethod);
Run Code Online (Sandbox Code Playgroud)

我们正在使用Q ...

可能吗 ?

更新(示例)

可以说我有诺言数组

[promise1,promise2,promise3, promiseN]
Run Code Online (Sandbox Code Playgroud)

现在,我希望在promise1处理完成后再处理,而不是等待所有诺言都将完成。

这里最大的问题是数组可以有N个诺言,而我在RT中不知道在得到这个数组之前我将获得多少诺言,因此我不能简单地使用

更新2(澄清更多:-)) 棘手的部分...

如果我事先知道数组的大小,那么我可以简单地使用then,然后在数组5链中使用5项,但是这里最棘手的部分是,我事先不知道在promise数组中会有多少promise ... 。

Est*_*ask 4

如果目标是将每个承诺链接在一起then但不等待所有承诺完成,那么这只是一个循环:

for (const promise of promiseArray) {
  promise.then(...)
}
Run Code Online (Sandbox Code Playgroud)

如果最终应将 Promise 结果连接在一起,则可以通过以下方式额外处理该数组all:

Promise.all(promiseArray.map(promise => promise.then(...)))
.then(...)
Run Code Online (Sandbox Code Playgroud)

请注意,此处的行为all适用。如果 Promise 数组中有未捕获的拒绝,则只有第一个拒绝会被捕获。

对于大多数 Promise 实现来说都是如此。可能有一些 Q 方法可以更轻松地做到这一点。