【发布时间】:2017-02-20 07:47:46
【问题描述】:
假设我有几个主要的 Promise,其中一些在里面返回 Promise。我想从我想到Promise.all 的某种承诺函数中检索结果。首先,让我们看看下面的示例代码
var Promise = require('bluebird');
promise = []
function promise1(){
return new Promise(function(resolve, reject){
console.log('promise1');
resolve('promise1');
});
}
function promise2(){
return new Promise(function(resolve, reject) {
console.log('promise2');
resolve('promise2');
});
}
function promise3(){
promise2().then(function(){
return new Promise(function(resolve, reject) {
console.log('promise3');
resolve('promise3')
})
})
}
上面的代码,两个主要的 Promise 是 promise1 和 promise3。 promise2 将由 promise3 返回。我正在证明promise3 是一个长期的承诺。为了运行,我初始化了
promise = [promise1(), promise3()];
Promise.all(promise).then(function(data){
console.log('done', data);
})
结果是
承诺1
承诺2
承诺3
完成['promise1',未定义]
但我期待
完成 ['promise1', 'promise3']
我的问题是这种情况下的最佳做法是什么?
【问题讨论】:
-
关于更新,每篇帖子只问一个问题。而是post a new one
-
您没有正确实施 halcyon 的更改。您在 promise3 上 在
.then之前返回承诺。再次检查您的代码。 -
@torazaburo:这只是另一个讨论,将按照 Bergi 的建议将其分开
-
我们不需要再讨论了。只需运行 Halcyon 建议的代码即可。有用。然后你可以接受他的回答,我们都可以继续前进。
标签: javascript node.js promise bluebird es6-promise