javascript - 如何在异步函数中处理多个等待

标签 javascript async-await fetch

我有多个 API 调用要进行,它们通过 API 获取,通过 API 将数据写入 DB,通过另一个 API 将输出发送到前端。

我已经用 await 编写了异步函数,如下所示 -

前 2 个应该一个接一个地运行,但第三个可以独立运行,无需等待前 2 个 fetch 语句完成。

let getToken= await fetch(url_for_getToken);
let getTokenData = await getToken.json();

let writeToDB = await fetch(url_for_writeToDB);
let writeToDBData = await writeToDB.json();

let frontEnd = await fetch(url_for_frontEnd);
let frontEndData = await frontEnd.json();

处理此类多个 fetch 语句的最佳方法是什么?

最佳答案

有很多方法,但最通用的是将每个异步代码路径包装在一个异步函数中。这使您可以根据需要灵活地混合和匹配异步返回值。在您的示例中,您甚至可以使用 async iife 内联代码:

await Promise.all([
  (async() => {
    let getToken = await fetch(url_for_getToken);
    let getTokenData = await getToken.json();

    let writeToDB = await fetch(url_for_writeToDB);
    let writeToDBData = await writeToDB.json();
  })(),
  (async() => {
    let frontEnd = await fetch(url_for_frontEnd);
    let frontEndData = await frontEnd.json();
  })()
]);

关于javascript - 如何在异步函数中处理多个等待,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58815415/

相关文章:

c# - 将任何给定的函数转换为可等待的任务

c# - 使用 TaskCompletionSource 作为 WaitHandle 的替代品是否可以接受?

swift - 过滤到 NSFetchRequest

php - 从按两列分组的表中获取所有数据 - mysql、php

javascript - 一次执行多个 DOM 更改

Javascript:打开和关闭输入标签仅适用于表单中的最后一个标签

c# - 在循环内的延迟任务内使用匿名方法

javascript/youtube api - undefined variable YT

javascript - filter() 返回空数组

objective-c - CloudKit 批量获取?