Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/448.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何构建包含多重依赖的承诺链?_Javascript_Promise - Fatal编程技术网

Javascript 如何构建包含多重依赖的承诺链?

Javascript 如何构建包含多重依赖的承诺链?,javascript,promise,Javascript,Promise,我想构建一个承诺链,如下所示。箭头表示依赖性:B需要A的输出;C需要A和B的输出 因为它不仅仅是一条链,而是一张网,我不知道如何优雅地完成它。我的想法是让B的输出包含A的输出,并通过边(B,C)将其全部传递给C。我想这可能不是最好的方法,因为应该有某种方法将A的结果直接传递给C 如果您真的想为C提供独立的promise结果,请尝试以下方法 var promises = { a: A() }; promises.b = promises.a.then(function(a) { retur

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

因为它不仅仅是一条链,而是一张网,我不知道如何优雅地完成它。我的想法是让B的输出包含A的输出,并通过边(B,C)将其全部传递给C。我想这可能不是最好的方法,因为应该有某种方法将A的结果直接传递给C


如果您真的想为C提供独立的promise结果,请尝试以下方法

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

但实际上,这只是两种编写相同内容的方法。

如果您真的想为C提供独立的promise结果,请尝试这样的方法

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

但实际上,这只是两种编写相同内容的方法。

如果您真的想为C提供独立的promise结果,请尝试这样的方法

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

但实际上,这只是两种编写相同内容的方法。

如果您真的想为C提供独立的promise结果,请尝试这样的方法

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


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

我认为除了线性链之外没有任何理由。这个问题实际上是关于承诺的,可以在任何框架中实现;它不是Angular.js特定的。我认为除了线性链之外没有任何其他原因。这个问题实际上是关于承诺的,可以在任何框架中实现;它不是Angular.js特定的。我认为除了线性链之外没有任何其他原因。这个问题实际上是关于承诺的,可以在任何框架中实现;它不是Angular.js特定的。我认为除了线性链之外没有任何其他原因。这个问题实际上是关于承诺的,可以在任何框架中实现;它不是Angular.js特定的。我认为第二个更容易解释。@FelixKling OP最初标记为Angular.Ah。不过,
Promise。所有的
都是标准的:)@Phil,我想你忘了添加
return
。@mido22
return
在哪里?我认为第二个更容易解释。@FelixKling OP最初标记为Angular.Ah。不过,
Promise。所有的
都是标准的:)@Phil,我想你忘了添加
return
。@mido22
return
在哪里?我认为第二个更容易解释。@FelixKling OP最初标记为Angular.Ah。不过,
Promise。所有的
都是标准的:)@Phil,我想你忘了添加
return
。@mido22
return
在哪里?我认为第二个更容易解释。@FelixKling OP最初标记为Angular.Ah。不过,
Promise.all
都是标准的:)@Phil,我想你忘了添加
return
。@mido22
return
在哪里?