Ich weiß also, dass ich parallele Anfragen stellen und in Javascript / ReactNative darauf warten kann, indem ich Promise.all()
oder Promise.allSettled()
:
await Promise.all([
request1(),
request2(),
request3(),
]);
Aber wie, wenn ich so etwas machen will:
var result = {}
await Promise.all([
result["response1"] = request1(),
result["response2"] = request2(),
result["response3"] = request3()
]);
return result;
Derzeit mache ich eine Problemumgehung wie folgt:
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;
}
Aber ich denke, dies ist ein schlechtes Muster, das fehleranfällig ist (wenn die parallelRequest mehrmals schnell hintereinander aufgerufen wird), und ich möchte nach einem besseren Weg suchen, dies zu implementieren.
Sie sollten so etwas tun:
const parallelRequest = async () => {
const [response1, response2, response3] = await Promise.all([
request1(),
request2(),
request3(),
]);
const result = { response1, response2, response3 };
return result;
};
Weil Promise.all ein Array aller Antworten in derselben Reihenfolge wie das bereitgestellte Array von Promises zurückgibt.
Sie könnten auch direkt zurückkehren { response1, response2, response3 }
Dieser Artikel stammt aus dem Internet. Bitte geben Sie beim Nachdruck die Quelle an.
Bei Verstößen wenden Sie sich bitte [email protected] Löschen.
Lass mich ein paar Worte sagen