passieren Ich mache ein Frontend in Angular und Backend in Rails. Im Angular-Bereich sende ich viele http-Anfragen und manchmal müssen diese Anfragen passieren, um sicherzustellen, dass die App ordnungsgemäß funktioniert.Sicherstellen, dass asynchrone Aufrufe in der Reihenfolge in Angular
Basierend auf meiner Forschung verwenden Leute Versprechungen aus diesem Grund. Ist das wahr? Versprichst du, dass einer nach dem Zeitpunkt passiert, an dem die vorherige Aktion vollständig ausgeführt wurde und die Antwort zurück ist?
Schauen wir uns mein Beispiel an.
Ich habe eine Zusage, die Anwendungsobjekt zurückgibt. Wenn es in localStorage nicht vorhanden ist, ruft meine App den Remote-Server ab.
ApplicationModule.get = function() {
if (!localStorage.application) {
return Restangular.all('session').one('user').get().then(function (response) {
application = {
"id": response.current_application_id,
"user_id": response.id,
"_type": response.current_type
}
localStorage.setItem("application", JSON.stringify(application));
return application
});
} else {
return $q.resolve(JSON.parse(localStorage.application));
}
}
return ApplicationModule;
}]);
In meinem anderen Controller verwende ich Funktion in folgender Weise. Ich muss im Grunde Antwort von ApplicationModule.get()
erhalten und diese als Parameter in der nächsten Funktion somefunction
verwenden.
ApplicationModule.get().then(function (response) {
somefunction(response);
})
Was ich neugierig bin, ist, dass, wenn ich Versprechen verwenden, wird somefunction()
immer nach return Restangular.all('session').one('user').get().then(function (response)
in ApplicationModule.get erfolgt aufgerufen wird()?
Also, Versprechen wird für den Zweck der multiplen asynchronen Computing verwendet, wenn es etwas mit dem vorherigen Ergebnis zu tun hat, richtig? Und ich mache es richtig, richtig? – JoHksi
Ja, du machst das Richtige, wenn man bedenkt, dass Ajax asynchron ist, Versprechen können aber auch für eine Berechnung verwendet werden – niceman