Promise.allSettled in der babel ES6-Implementierung

8

Ich verwende babel , um meinen [email protected] -Code zu übertragen, und ich bleibe bei den Versprechen.

Ich brauche allSettled -Funktion, die ich zB in q und bluebird oder angular.$q verwenden könnte.

In babels Core-js Promise gibt es keine allSettled Methode.

Zur Zeit verwende ich q.allSettled als Workaround:

import { allSettled } from 'q';

Gibt es so etwas in Babel Polyfill? Alternativ, was ist ein guter Algorithmus für mich zu versuchen zu implementieren?

    
Zlatko 01.06.2015, 08:46
quelle

4 Antworten

1
  

Alternativ, was ist ein guter Algorithmus für mich zu versuchen zu implementieren?

  1. Erstellen Sie ein neues Versprechen mit einer Executor-Funktion
  2. Verwenden Sie ein Zähler / Ergebnis-Array im Bereich des Executors
  3. registrieren Sie einen then () Callback mit jedem übergeordneten Versprechen, die Ergebnisse im Array
  4. zu speichern
  5. auflösen / ablehnen von Versprechen aus Schritt 1, wenn counter angibt, dass alle übergeordneten Versprechen abgeschlossen sind
the8472 01.06.2015, 11:51
quelle
12

Wenn Sie sich die Implementierung von q.allSettled ansehen Ich sehe, es ist eigentlich ziemlich einfach zu implementieren. Hier ist, wie Sie es mit ES6 Promises implementieren können:

%Vor%     
Michael Kropat 19.08.2016 04:17
quelle
1

Hier ist mein Versuch, etwas Ähnliches, ich habe Newsletter-Service und in meinem Fall wollte ich meine allSettled Versprechen mit einem Array aller Ergebnisse (Ablehnungen und Resolutionen), IN ORDER , einmal zu lösen die E-Mail-Versprechen sind erledigt (alle E-Mails sind ausgegangen):

%Vor%     
stujo 07.10.2015 04:29
quelle
0

Hier ist eine weitere Einstellung mit derselben Funktionalität: spex.batch

Der Quellcode wäre zu viel, um ihn erneut zu veröffentlichen Hier, hier ist nur ein Beispiel aus der Stapelverarbeitung benutze es:

%Vor%

Dies gibt aus:

%Vor%

Lassen Sie uns jetzt einen Fehler machen, indem Sie getWord auf Folgendes setzen:

%Vor%

Jetzt ist die Ausgabe:

%Vor%

d. Das gesamte Array wird abgeglichen und meldet indexgebundene Ergebnisse.

Und wenn wir statt des gesamten Grundes getErrors() nennen:

%Vor%

dann ist die Ausgabe:

%Vor%

Dies dient nur dazu, den schnellen Zugriff auf die Liste der aufgetretenen Fehler zu vereinfachen.

    
vitaly-t 15.10.2015 05:47
quelle