为什么Promise.all在完成所有异步功能后无法工作?

时间:2016-07-13 13:21:36

标签: javascript asynchronous es6-promise

您好我是Js的新手,我想在打印height之前等待一些异步功能完成。但代码永远不会打印它我无法理解为什么。请帮帮我:(

ni

2 个答案:

答案 0 :(得分:1)

  

Promise.all(iterable)方法返回一个解析时间的promise   可迭代参数中的所有承诺都有已解决,或拒绝   由于第一个通过的拒绝承诺的原因。

在您的示例中,您没有解决或拒绝您的承诺:

resolve

请注意参数rejectnew Promise((resolve, reject) => { var result = compileEntry(item); if(result) { resolve(result); }else { reject("reson"); } }) 。您应该使用这些回调来解决或拒绝承诺。例如:

składka

答案 1 :(得分:0)

您需要使用resolvereject

  

new Promise(/ * executor * / function(resolve,reject){...});

var lib_array = [1, 2, 3];

function compileEntry(item, index) {
  return new Promise((resolve, reject) => {
    setTimeout(function() {
      resolve(console.log(item));
    }, index * 1000);
  });
}

this.run = function() {
  'use strict';
  let compile_lib = lib_array.map((item, index) => {
    return compileEntry(item, index);
  });
  Promise.all(compile_lib).then(() => {
    console.log("ni");
  });
}

this.run();