Im Versuch, die $ q.defer, $ q.all und Versprechungen, um eine Liste von http zu warten, um zu verwenden, fordert
ich diesen Code verwendet die $ q zu nennen. Alle
Diese Funktion wird nie aufgerufen, obwohl ich überprüft und die $ http.get für alle Werte aufgerufen wird.
var deferred = $q.defer();
$http.get(requestUrl).
then(function (data) {
var p = {
data: data,
name: name
};
pData.push(p);
deferred.resolve(p);
return p;
})
.catch(function (status) {
deferred.reject(status);
});
promisesList.push(deferred.promise);
Im Druck auf DoStep2 die Länge pData und auch die pData mit console.log und ich bekommen, was die Länge von 0 und sah aus wie 0 Objekte, aber wenn ich es öffnen sieht es aus wie alle Objekte werden innerhalb des $ http.get-Aufrufs für jeden spezifischen Aufruf initialisiert, der mich sicherstellt, dass die $ http.get-Antwort empfangen wurde und es eine gültige Antwort ist.
Auch das $ all wird überhaupt nicht genannt, was könnte falsch sein?
Vielen Dank für Ihre Unterstützung
Eine Möglichkeit ist, dass Sie keine Erfolgsantworten für jede Anfrage erhalten. Wenn Sie eine Antwort von 400 haben, gilt dies als Ablehnung von '$ http.get'. Ein anderer Fehler ist ein Laufzeitfehler in der '.then()' (Ich kann 'pData' nicht erkennen, daher kann' .push' fehlschlagen. –
Bitte geben Sie eine [mcve] an. Auch sollte $ nicht verwendet werden qdefer() 'da' $ http' selbst ein Versprechen zurückgibt – charlietfl
Andere Probleme: Sie drücken auf 'promentsList', rufen aber' .all' auf 'promises' auf. Persönlich minimiere ich die Verwendung von' $ q.defer() ' - Das Ergebnis von '$ http.get' ist sowieso ein Versprechen, also können Sie das direkt tun. –