处理复杂的promise树依赖关系有哪些最佳实践?

时间:2016-04-03 10:23:34

标签: node.js design-patterns promise q

假设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()在其范围内没有resultOfPromise1resultOfPromise2。对此的一个解决方案就是简单地嵌套承诺,但这是承诺在替换回调时要解决的问题之一。

另一个是在promise1()范围内有一个顶级变量,并将promises的所有返回值存储到该变量,然后在{{1}中访问 }。但是这个解决方案很麻烦,难以阅读。

到目前为止,我一直在使用嵌套方法,但它并不理想。这是你在代码中遇到的问题吗?有什么更好的方法来实现这一目标?

0 个答案:

没有答案