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 ... 。
如果目标是将每个承诺链接在一起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 方法可以更轻松地做到这一点。
| 归档时间: |
|
| 查看次数: |
2289 次 |
| 最近记录: |