Verketten einer unbekannten Anzahl von Versprechen in AngularJS

8

OK, sagen wir, ich habe ein Array von n XHR-Anfragen:

%Vor%

Wie kann ich sicher sein, ParseMyResultsArray() aufzurufen, wenn alle Versprechen gelöst sind, ohne die Größe meines requests -Arrays zu kennen?

Danke für Ihre Hilfe!

    
Franquis 26.03.2013, 22:14
quelle

2 Antworten

17

Von eckigen Dokumenten zu $ http :

  

Die $ http-API basiert auf den verzögerten / zugesagten APIs, die von $ q bereitgestellt werden   Service.

Daher ist es möglich, die $ q.all () -Methode zu verwenden, die ein Array von Versprechen und :

  

verbindet mehrere Versprechen zu einem einzigen Versprechen, das wann gelöst wird   Alle Eingabeversprechen sind aufgelöst

Der Implementierungscode lautet:

%Vor%     
Dmitry Evseev 26.03.2013, 22:29
quelle
8

Ich weiß, dass diese Frage über ein Jahr alt ist, aber es verdient eine bessere Antwort.

Der Code kann viel präziser sein und die hässlichen äußeren Variablen promises und AllResults und äußere Funktion ParseMyResultsArray() können vermieden werden.

Versuch es ...

%Vor%

Wenn ein weiterer Zugriff auf parsedResults erforderlich ist, behalten (oder geben Sie auf jeden Fall einen Verweis auf die von $q.all(...).then(...) zurückgegebene Zusage) zurück. Aufgrund der Asynchronität beim Erhalt der Daten ist diese Zusage von parsedResults weitaus nützlicher als die rohe äußere Variable AllResults .

    
Roamer-1888 16.07.2014 20:28
quelle

Tags und Links