Pelo que entendi, uma promessa é algo que pode resolver () ou rejeitar (), mas fiquei surpreso ao descobrir que o código na promessa continua a ser executado depois que uma resolução ou rejeição é chamada.
Considerei resolver ou rejeitar uma versão assíncrona de saída ou retorno, que interromperia toda a execução imediata da função.
Alguém pode explicar por que o exemplo a seguir às vezes mostra o console.log após uma chamada de resolução:
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ão é uma instrução de controle JS que magicamente teria o efeito dereturn
, é apenas uma chamada de função e, sim, a execução continua depois dela.