Jak rozumiem, obietnica jest czymś, co może rozwiązać () lub odrzucić (), ale byłem zaskoczony, gdy dowiedziałem się, że kod w obietnicy nadal jest wykonywany po wywołaniu rozwiązania lub odrzucenia.
Rozważałem rozwiązanie lub odrzucenie bycia przyjazną asynchronicznie wersją wyjścia lub powrotu, która zatrzymałaby wszystkie natychmiastowe wykonywanie funkcji.
Czy ktoś może wyjaśnić, dlaczego poniższy przykład czasami pokazuje plik console.log po wywołaniu rozwiązania:
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()
nie jest instrukcją sterującą JS, która w magiczny sposób miałaby wpływreturn
, to tylko wywołanie funkcji i tak, wykonanie jest kontynuowane po nim.