Promise.all返回函数

s-l*_*ndz 4 javascript fetch promise async-await

我想将Async / Await与访存API结合使用。因此,我有2个异步函数return result.json()

我在中添加了2 Promise Promise.all([]),但返回的值是'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]
  });
Run Code Online (Sandbox Code Playgroud)

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

谢谢社区!

Sur*_*yan 5

在中运行您的函数Promise.all。因此,他们将返回Promises,该Promises将被结算并传递给then函数。

Promise.all([externalUsers(), localUsers()]).then(values => {
    console.log(values);
});
Run Code Online (Sandbox Code Playgroud)

  • 事实上,我忘记用 () :/ 启动我的函数。非常感谢 ! (2认同)

Mat*_*bst 5

你应该await你的Promise.all

const values = await Promise.all([...]);
const value1 = values[0];
...
Run Code Online (Sandbox Code Playgroud)

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