【发布时间】:2020-03-07 23:17:04
【问题描述】:
我有多个 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 语句的最佳方法是什么?
【问题讨论】:
-
你可以看看Promise.all。
-
@YannickK Promise.all 在这里有必要吗?他不能只使用 .then() 代替吗?他不是在等待两个都完成,而是第一个然后第二个,然后第三个,不管这两个。
-
@Kobe 我认为这种情况下的主要问题是 OP 希望将服务器和客户端调用分开,因为它们彼此不依赖 - 它会是如果他们互相等待,这在性能上是愚蠢的 - 但如果 任何 他们失败了,你想要拒绝。你绝对正确,他可以不用
Promise.all,但在这种情况下,我想如果他将所有内容都包含在一个Promise.all调用中,它会更干净(并且将来更容易构建),特别是针对错误处理。 -
@Kobe 因为
Promise.allis essential for proper error handling 并等待第一个然后第二个和第三个承诺的完成。 -
simplest answer 最好地解决了这个问题,但不幸的是,它不该被否决。值得一试,@Yasar Abdulllah。
标签: javascript async-await fetch