【问题标题】:Promise.all returns functionPromise.all 返回函数
【发布时间】:2018-02-20 12:33:36
【问题描述】:

我想将 Async/Await 与 fetch API 一起使用。所以,我有 2 个用于 return result.json() 的异步函数。

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

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

感谢社区!

【问题讨论】:

  • 您要执行这些功能吗? Promise.all([externalUsers(), localUsers()])

标签: javascript promise async-await fetch


【解决方案1】:

Promise.all 中运行您的函数。所以他们将返回 Promises,这些 Promises 将被解决并传递给then 函数。

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

【讨论】:

  • 确实,我忘了用 () 启动我的函数:/。非常感谢!
【解决方案2】:

你应该await你的Promise.all

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

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

【讨论】:

    猜你喜欢
    • 2018-12-05
    • 2019-02-04
    • 2023-02-23
    • 2017-02-26
    • 2020-11-05
    • 2020-08-06
    • 2019-02-25
    • 2021-04-11
    • 2019-07-17
    相关资源
    最近更新 更多