Verständnis Versprechen.Rennen() Verwendung
Soweit ich weiß, gibt es zwei Möglichkeiten, über Versprechen
:
Ok, ich weiß, was promise.all()
tut. Läuft es verspricht, parallel, und .then
gibt Sie die Werte, wenn die beiden gelöst sind. Hier ist ein Beispiel:
Promise.all([
$.ajax({ url: 'test1.php' }),
$.ajax({ url: 'test2.php' })
])
.then(([res1, res2]) => {
//Both requests resolved
})
.catch(error => {
//Something went wrong
});
Aber ich verstehe nicht, was bedeutet promise.race()
soll genau das zu tun? In anderen Worten, was ist der Unterschied mit nicht es zu benutzen? Dies anzunehmen:
$.ajax({
url: 'test1.php',
async: true,
success: function (data) {
//This request resolved
}
});
$.ajax({
url: 'test2.php',
async: true,
success: function (data) {
//This request resolved
}
});
Sehen? Ich habe nicht verwendet promise.race()
und es verhält sich wie promise.race()
. Sowieso, gibt es eine einfache und saubere Beispiel, mir zu zeigen, Wann genau sollte ich verwenden promise.race()
?
InformationsquelleAutor Martin AJ | 2017-09-23
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich habe es verwendet für die Batchverarbeitung. Wir mussten batch-zig Tausende Datensätze in Chargen für eine lange andauernde Ausführung. Wir könnten es tun, parallel, aber nicht wollen, dass die Anzahl der ausstehenden Anforderungen, um aus der hand.
InformationsquelleAutor ChristopherJ
Hier ist ein einfaches Beispiel, um zu verstehen, die Verwendung von
promise.race()
:Sich vorstellen, Sie müssen zu Holen ein paar Daten aus einem server und wenn die Daten zu lange dauert, laden (sagen wir 15 Sekunden) Sie möchten zeigen einen Fehler an.
Rufen Sie Versprechen.Rennen() mit zwei Versprechen, die erste Ihrer ajax-Anfrage und das zweite ist eine einfache
setTimeout(() => resolve("ERROR"), 15000)
ist die richtige. In deinem Beispiel mit
timeout
im ajax-request wäre besser. Danke trotzdem, upvoteInformationsquelleAutor thelmuxkriovar
Nehmen wir ein Beispiel Problemumgehung
Promise.race
wie unten.Sehen Sie
race
- Funktion ausgeführt, die alle Versprechen, aber wem zuerst fertig wird aufgelöst/ablehnen mit wrapperPromise
.InformationsquelleAutor rab