Promise.all返回函数

时间:2017-09-12 06:48:52

标签: javascript promise async-await fetch

我想使用带有fetch API的Async / Await。所以,我为return result.json()提供了2个异步功能。

我在Promise.all([])添加了我的2个承诺,但返回的值是' function()'。

我的代码:

  // Load external users
  const externalUsers = async () => {
    const result = await fetch(url);
    return result.json();
  };

  const localUsers = async () => {
    const result = await Users.allDocs({ include_docs: true });
    return result.rows;
  };

  Promise.all([externalUsers, localUsers]).then(values => {
    console.log(values); // return (2) [function, function]
  });

我不明白为什么。你能救我吗?

谢谢社区!

2 个答案:

答案 0 :(得分:4)

Promise.all中运行您的功能。因此,他们将返回Promises,已解决并传递给then函数。

Promise.all([externalUsers(), localUsers()]).then(values => {
    console.log(values);
});

答案 1 :(得分:1)

您应该await Promise.all

const values = await Promise.all([...]);
const value1 = values[0];
...

您看到函数的原因是因为Promise.all返回了一个需要解析的Promise数组。因此,await Promise.all,等待他们全部完成/先解决。