promise.all内部的函数调用

时间:2019-09-17 20:34:47

标签: javascript es6-promise

我在Promise.all内传递了一个函数(返回一个诺言),但没有得到预期的输出

function first() {
  Promise.all([fun, fun1, fun2])
    .then(function(values) {
      console.log(values);
    })
    .catch(e => console.log(e));
}

function fun() {
  return new Promise((res, re) => {
    res(console.log("dd"));
  });
}

function fun1() {
  return Promise.resolve(3);
}

function fun2() {
  return 2;
}

//calling function here
first();

预期:[dd,3,2]

实际:[ [Function: fun], [Function: fun1], [Function: fun2] ]

1 个答案:

答案 0 :(得分:2)

  

我已经在Promise.all内部传递了一个函数(返回一个承诺)

不正确。您应该传递该函数返回的promise。因此,如果 f 返回一个promise,而不是

Promise.all([fun, fun1, fun2])

你应该做

Promise.all([fun(), fun1(), fun2()])