我想构建一个承诺链,如下所示。箭头表示依赖性:B需要A的输出; C需要A和B的输出。
由于它不仅仅是一个链条,而是一个网络,我不知道如何以优雅的方式做到这一点。我的想法是让B的输出包含A的输出,并通过边缘(B,C)将它们一起传递给C.我想这可能不是最好的方法,因为应该有一些方法将A的结果直接传递给C.
答案 0 :(得分:3)
如果您真的想为C提供独立的承诺结果,请尝试这样的
var promises = { a: A() };
promises.b = promises.a.then(function(a) {
return B(a);
});
Promise.all(promises).then(function(results) {
C(results.a, results.b);
});
否则,我认为没有问题
A().then(function(a) {
B(a).then(function(b) {
C(a, b);
});
});
但实际上,这只是写同一件事的两种方式。