Javascript 如何构建包含多重依赖的承诺链?
我想构建一个承诺链,如下所示。箭头表示依赖性:B需要A的输出;C需要A和B的输出 因为它不仅仅是一条链,而是一张网,我不知道如何优雅地完成它。我的想法是让B的输出包含A的输出,并通过边(B,C)将其全部传递给C。我想这可能不是最好的方法,因为应该有某种方法将A的结果直接传递给CJavascript 如何构建包含多重依赖的承诺链?,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
如果您真的想为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
。@mido22return
在哪里?我认为第二个更容易解释。@FelixKling OP最初标记为Angular.Ah。不过,Promise。所有的都是标准的:)@Phil,我想你忘了添加return
。@mido22return
在哪里?我认为第二个更容易解释。@FelixKling OP最初标记为Angular.Ah。不过,Promise。所有的都是标准的:)@Phil,我想你忘了添加return
。@mido22return
在哪里?我认为第二个更容易解释。@FelixKling OP最初标记为Angular.Ah。不过,Promise.all
都是标准的:)@Phil,我想你忘了添加return
。@mido22return
在哪里?