我有这样的承诺:
var volts = [];
var sortedVolts;
for (var count = 0; count < 3; count++) {
volts.push(Math.floor(Math.random() * 100));
}
sortedVolts = [...volts]; //CHANGE THIS
sortedVolts.sort();
console.log('UNSORTED', volts);
console.log('SORTED', sortedVolts);
为什么module.exports = function (a, b, c) {
return someAsync(() => {
someFunc(a);
})
.then(() => myPromises(a, b, c))
.then(result => {
console.log('log the result: ', JSON.stringify(result)); // empty
})
};
const myPromises = function myPromises(a, b, c){
Promise.all([
somePromise(a),
someOtherPromise(b)
]).then(function (data) {
Promise.all([
anotherPromise(data[0]),
yetanotherPromise(data[1])
]).then(function (finalResult) {
console.log('check out finalResult: ', JSON.stringify(finalResult)); // i see the expected results here
return finalResult;
}).catch(err => { return err });
}).catch(err => { return err });
};
返回空?换句话说,为什么这条线在console.log('log the result: ', JSON.stringify(result));
完成之前执行?
我如何让它等待所有的承诺然后执行?
答案 0 :(得分:2)
不确定要返回哪个承诺,但一般的想法是返回Promise.all,而不是只调用Promise.all。
const myPromises = function myPromises(a, b, c){
return Promise.all([
答案 1 :(得分:2)
问题是你的第二个promise.all没有返回任何东西让它传递给主Promise.all 试试这段经过编辑的代码
Activity/Fragment
您的代码无法正常工作的原因是promise链是单流,您没有从第二个承诺中返回任何内容以将其传递给外部promise.all链