Für ein eckiges Projekt muss ich Versprechungen verschachteln und ich stoße auf Fälle, in denen ich nicht sicher bin, was ich tue. Hier ist eine meiner Code:Eckige bedingte Versprechen
return Action1().then(function (data) {
var defer = $q.defer();
if (data.condition) {
$q.all([Action2(), Action3(), Action4()]).then(function() {
defer.resolve();
});
} else {
defer.reject("error_code");
}
return defer.promise;
});
Action1, Action2, Action3 und Action4 arbeiten Versprechen Funktionen. Es ist eine Menge Versprechungen und Aktionen hängen von den Bedingungen ab. Kann ich das tun und sicher sein, dass meine Hauptfunktion immer gelöst oder zurückgewiesen wird?
Ich lese, dass wir Versprechen innerhalb der Auflösungsfunktion übergeben können. Kann ich das und das ist das gleiche wie oben:
return Action1().then(function (data) {
var defer = $q.defer();
if (data.condition) {
defer.resolve($q.all([Action2(), Action3(), Action4()]);
} else {
defer.reject("error_code");
}
return defer.promise;
});
Sie haben Ihre Antwort bearbeitet. Ich habe nach dem zweiten Teil gefragt, aber du antwortest mir während ich posten. Ich bin ein Anfänger mit Versprechungen. Ich lerne die Form (zögere mit Entschlossenheit und lehne ab) und ich benutzte sie überall in meinem Projekt. Vielen Dank für den Hinweis, dass ich direkt $ q oder Fehler verwenden könnte. – JeromeModi