Wie ich verstehe, ist ein Versprechen etwas, das auflösen() oder ablehnen(), aber ich war überrascht herauszufinden, dass der Code im Versprechen weiter ausgeführt wird, nachdem eine Auflösung oder Zurückweisung aufgerufen wurde.Warum setzt Javascript ES6 Promises die Ausführung nach einer Behebung fort?
Ich dachte, dass Auflösung oder Ablehnung eine async-freundliche Version von Exit oder Return, die alle sofortige Ausführung der Funktion stoppen würde.
Kann mir jemand erklären, den Gedanken hinter warum das folgende Beispiel zeigt manchmal die console.log nach einem resolve Aufruf:
var call = function() {
return new Promise(function(resolve, reject) {
resolve();
console.log("Doing more stuff, should not be visible after a resolve!");
});
};
call().then(function() {
console.log("resolved");
});
vernünftige Frage, aber dann wieder, JS führt nur eine Aussage nach der anderen, wie Sie es sagen zu. 'resolve()' ist keine JS-Steueranweisung, die magischerweise den Effekt von "return" haben würde, es ist nur ein Funktionsaufruf, und ja, die Ausführung wird danach fortgesetzt. –
Das ist eine gute Frage, und selbst nachdem ich alle Antworten gelesen habe, bin ich mir nicht sicher über die besten Praktiken ... –