Warten Sie, bis alle ES6 promises komplett, sogar abgelehnt verspricht

Sagen wir, ich habe eine Reihe von Versprechungen, die Netzwerk-Anforderungen, von denen man scheitern wird:

//http://does-not-exist will throw a TypeError
var arr = [ fetch('index.html'), fetch('http://does-not-exist') ]

Promise.all(arr)
  .then(res => console.log('success', res))
  .catch(err => console.log('error', err)) //This is executed   

Sagen wir, ich will warten, bis alle diese fertig sind, unabhängig davon, ob man versagt hat. Möglicherweise gibt es ein Netzwerk-Fehler nach einer Ressource, ich kann auch ohne Leben, aber wenn ich kann, ich will, bevor ich gehen. Ich möchte zur Verarbeitung von Netzwerk-Ausfälle anmutig.

Seit Verspricht.all nicht verlassen, keinen Raum für das, was ist die empfohlene Muster für den Umgang mit diesem, ohne Verwendung eines verspricht Bibliothek?

Was muss zurückgegeben werden in dem resultierenden array für zusagen, die abgelehnt?
ES6 verspricht Unterstützung keine solche Methode (und die sind momentan scheinbar langsamer als Bluebird). Hinzu kommt, dass nicht alle Browser oder Suchmaschine unterstützt Sie nur noch. Ich würde stark empfehlen die Verwendung von Bluebird, die mit allSettled erfüllt Ihre benötigen, ohne dass Sie Rollen Sie Ihre eigenen.
Ich denke, Sie bringen die Grund Versprechen.alle haben nicht dieses Verhalten, das ich denke, dass macht Sinn. Dies ist nicht wie es funktioniert, aber eine alternative Sichtweise wäre zu sagen, Versprechen.alle sollen den Wiedereinstieg ein besonderes Versprechen, die nie versagt-und Sie würden die Fehler, die geworfen wurde, als argument repräsentiert die gescheiterten Versprechen.
Zu erweitern, ich würde gerne eine version von Versprechen.alle, die verrechnet wird, wenn eine oder mehr behoben, lehnt aber wenn alle fehlgeschlagen.
Hmm, ich denke nicht so. Promise.all ablehnen werden, sobald one Verheißung lehnt, so dass Ihre vorgeschlagene idiom nicht garantieren, dass alle Verheißungen erfüllt sind.

InformationsquelleAutor Nathan Hagen | 2015-07-15

Schreibe einen Kommentar