慕姐4208626
2022-10-21 14:38:26
所以我知道我可以發(fā)出并行請求并在 Javascript / ReactNative 中使用Promise.all()or等待它Promise.allSettled():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;}但我認(rèn)為這是一個糟糕的模式,容易出現(xiàn)錯誤(如果 parallelRequest 被快速連續(xù)多次調(diào)用),我想尋求一種更好的方法來實(shí)現(xiàn)這一點(diǎn)。
1 回答

DIEA
TA貢獻(xiàn)1820條經(jīng)驗(yàn) 獲得超3個贊
你應(yīng)該這樣做:
const parallelRequest = async () => {
const [response1, response2, response3] = await Promise.all([
request1(),
request2(),
request3(),
]);
const result = { response1, response2, response3 };
return result;
};
因?yàn)?Promise.all 返回所有響應(yīng)的數(shù)組,順序與提供的 Promise 數(shù)組相同。
步驟 1:將響應(yīng)數(shù)組解構(gòu)為所有響應(yīng)
第 2 步:使用變量名稱作為結(jié)果對象中的鍵構(gòu)建響應(yīng)對象
第 3 步:返回您的結(jié)果對象
你也可以直接返回{ response1, response2, response3 }
添加回答
舉報(bào)
0/150
提交
取消