Wie mache ich parallele Anfragen und gebe ein Objekt zurück, das alle parallelen Antworten in Javascript enthält?

Chen Li Yong

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.

Apolo

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.

  • Schritt 1: Destrukturieren Sie das Antwortarray in alle Antworten
  • Schritt 2: Erstellen Sie das Antwortobjekt unter Verwendung des Variablennamens als Schlüssel im Ergebnisobjekt
  • Schritt 3: Geben Sie Ihr Ergebnisobjekt zurück

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.

bearbeiten am
0

Lass mich ein paar Worte sagen

0Kommentare
LoginNach der Teilnahme an der Überprüfung

Verwandte Artikel

TOP Liste

heißlabel

Archiv