gpt4 book ai didi

javascript - 如何执行并行请求并返回包含 Javascript 中所有并行响应的对象?

转载 作者:行者123 更新时间:2023-12-01 16:09:59 25 4
gpt4 key购买 nike

所以我知道我可以使用 Promise.all()Promise.allSettled() 在 Javascript/ReactNative 中发出并行请求并等待它:

await Promise.all([
request1(),
request2(),
request3(),
]);

但是如果我想做这样的事情怎么办:

var result = {}
await Promise.all([
result["response1"] = request1(),
result["response2"] = request2(),
result["response3"] = request3()
]);
return result;

目前我的解决方法是这样的:

request1 = async() => {
return client.post(....).then(async(response) => {
this.request1response = response
return response
})
}
// same thing with request2() and request3()

parallelRequest = async() => {
var result = {}
await Promise.all([
request1(),
request2(),
request3()
]);
result["response1"] = this.request1response
result["response2"] = this.request2response
result["response3"] = this.request3response
delete this.request1response
delete this.request2response
delete this.request3response
return result;
}

但我认为这是一个糟糕的模式,容易出现错误(如果快速连续多次调用 parallelRequest),我想寻求一种更好的方法来实现它。

最佳答案

你应该这样做:

const parallelRequest = async () => {
const [response1, response2, response3] = await Promise.all([
request1(),
request2(),
request3(),
]);
const result = { response1, response2, response3 };
return result;
};

因为 Promise.all 返回所有响应的数组,其顺序与提供的 Promises 数组相同。

  • 第 1 步:将响应数组解构为所有响应
  • 第 2 步:使用变量名称作为结果对象中的键构建响应对象
  • 第 3 步:返回结果对象

你也可以直接返回{ response1, response2, response3 }

关于javascript - 如何执行并行请求并返回包含 Javascript 中所有并行响应的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62634758/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com