Як я розумію, обіцянка - це те, що може вирішити () або відхилити (), але я здивувався, дізнавшись, що код у обіцянці продовжує виконуватись після виклику рішення або відхилення.
Я вважав, що рішення або відхилення є дружньою до асинхрії версією виходу або повернення, що зупинить виконання негайних функцій.
Чи може хтось пояснити думку, чому наступний приклад інколи показує 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
, це просто виклик функції, і так, виконання продовжується після нього.