Soweit ich weiß, kann ein Versprechen aufgelöst () oder abgelehnt () werden, aber ich war überrascht, dass der Code im Versprechen weiterhin ausgeführt wird, nachdem eine Lösung oder Ablehnung aufgerufen wurde.
Ich hielt das Auflösen oder Ablehnen für eine asynchrone Version von exit oder return, die jede sofortige Funktionsausführung stoppen würde.
Kann jemand den Gedanken erklären, warum das folgende Beispiel manchmal die console.log nach einem Auflösungsaufruf zeigt:
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");
});
resolve()
ist keine JS-Steueranweisung, die sich auf magische Weise auswirken würdereturn
, sondern nur ein Funktionsaufruf, und ja, die Ausführung wird danach fortgesetzt.