javascript nodejs保证所有后续执行

时间:2018-03-22 04:06:13

标签: javascript node.js promise

我有这样的承诺:

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));完成之前执行? 我如何让它等待所有的承诺然后执行?

2 个答案:

答案 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链