D'après ce que je comprends, une promesse est quelque chose qui peut résoudre () ou rejeter (), mais j'ai été surpris de découvrir que le code de la promesse continue de s'exécuter après l'appel d'une résolution ou d'un rejet.
J'ai considéré que la résolution ou le rejet était une version asynchrone de exit ou de retour, qui arrêterait toute exécution immédiate des fonctions.
Quelqu'un peut-il expliquer pourquoi l'exemple suivant montre parfois le fichier console.log après un appel de résolution:
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()
n'est pas une instruction de contrôle JS qui aurait comme par magie l'effetreturn
, c'est juste un appel de fonction, et oui, l'exécution continue après elle.