假设Node.js和Q,请使用以下代码:
return promise1()
.then(function promise2(resultOfPromise1) {
return resultOfPromise1 + 1;
}).then(function promise3(resultOfPromise2) {
return resultOfPromise2 + 1;
}).then(function promise4(resultOfPromise3) {
return resultOfPromise3 + 1;
})
Promises(至少在Q中)是针对这种设计模式而设计的。但是,通常在我的代码中,我会遇到类似依赖关系流的情况,但最终的promise需要来自 all 以前的promise的数据。例如:
return promise1()
.then(function promise2(resultOfPromise1) {
return resultOfPromise1 + 1;
}).then(function promise3(resultOfPromise2) {
return resultOfPromise2 + 1;
}).then(function promise4(resultOfPromise3) {
return [resultOfPromise1, resultOfPromise2, resultOfPromise3];
})
当然,promise4()
在其范围内没有resultOfPromise1
和resultOfPromise2
。对此的一个解决方案就是简单地嵌套承诺,但这是承诺在替换回调时要解决的问题之一。
另一个是在promise1()
范围内有一个顶级变量,并将promises的所有返回值存储到该变量,然后在{{1}中访问 }。但是这个解决方案很麻烦,难以阅读。
到目前为止,我一直在使用嵌套方法,但它并不理想。这是你在代码中遇到的问题吗?有什么更好的方法来实现这一目标?