如何构建涉及多重依赖的承诺链?

时间:2015-06-11 23:30:18

标签: javascript promise

我想构建一个承诺链,如下所示。箭头表示依赖性:B需要A的输出; C需要A和B的输出。

由于它不仅仅是一个链条,而是一个网络,我不知道如何以优雅的方式做到这一点。我的想法是让B的输出包含A的输出,并通过边缘(B,C)将它们一起传递给C.我想这可能不是最好的方法,因为应该有一些方法将A的结果直接传递给C.

AngularJS promise chain

1 个答案:

答案 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);
    });
});

但实际上,这只是写同一件事的两种方式。