Насколько я понимаю, обещание - это то, что может разрешить () или отклонить (), но я был удивлен, обнаружив, что код в обещании продолжает выполняться после вызова решения или отклонения.
Я считал, что функция resolve или reject является асинхронной версией exit или return, которая остановит все немедленное выполнение функций.
Может ли кто-нибудь объяснить, почему в следующем примере иногда отображается console.log после вызова разрешения:
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()
не является оператором управления JS, который волшебным образом мог бы иметь эффектreturn
, это просто вызов функции, и да, выполнение продолжается после него.