Da quanto ho capito, una promessa è qualcosa che può risolvere () o rifiutare (), ma sono rimasto sorpreso di scoprire che il codice nella promessa continua ad essere eseguito dopo che è stata chiamata una risoluzione o un rifiuto.
Ho considerato la risoluzione o il rifiuto di essere una versione asincrona di uscita o ritorno, che interromperebbe l'esecuzione immediata di tutte le funzioni.
Qualcuno può spiegare il pensiero alla base del motivo per cui il seguente esempio a volte mostra console.log dopo una chiamata di risoluzione:
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()
non è un'istruzione di controllo JS che magicamente avrebbe l'effetto direturn
, è solo una chiamata di funzione e sì, l'esecuzione continua dopo di essa.