Wpis z mikrobloga

@BikBoom: Mogę ci powiedzieć
await console.log("2");
nie jest asynchroniczne więc nie ma czekania w wykonywaniu tej funkcji więc order jest prawidłowy. sama myFunction jest i metoda .then jest asynchroniczna

Jakbyś zrobił

async function test() {
await Promise.resolve('aaa'); //faktyczny promis
console.log('2');
}

console.log("1");
myFunction().then(()=>console.log("4"));
console.log("3");
async function myFunction(){await test(); }
  • Odpowiedz
@BikBoom: Albo krokowo ci opiszę

console.log("1");
Odpala się standardowa synchroniczna funkcja

myFunction().then(()=>console.log("4"));
Odpalasz funkcje myFunction, funkcja jest asynchroniczna, ale wszystko co się w niej dzieje jest synchroniczne więc jest wykonywane od razu, promise się wykonuje i dodaje odpalenie .then na koniec kolejki funkcji oczekujących aż stos się opróżni

console.log("3");
Odpala się synchroniczna funkcja
Stos jest pusty sprawdzamy czy w kolejce jest coś do wykonania

.then(()=>console.log("4"));
jest funkcja którą można wykonać (resolved)
  • Odpowiedz
@BikBoom: Mam nadzieję, że zrozumiałeś :)
Najprościej jak się da to opisać to samo odpalenie funkcji

myFunction()
jest synchroniczne i wszystko co się w tej funkcji dzieje do momentu w którym nie ma czekania na inne promisy jest synchroniczne, dodawanie await przed funkcjami synchronicznymi nie zmienia ich wywołania, a jedynie zmienia moment wywołania następnych asynchronicznych tu masz przykład

console.log("1");
myFunction().then(()=>console.log("6"));
console.log("3");
async function myFunction(){
await console.log('2');
await console.log('4');
await console.log('5');
}
  • Odpowiedz
@BikBoom: Jedną rzecz ci przekłamałem :)

jest synchroniczne i wszystko co się w tej funkcji dzieje do momentu w którym nie ma czekania na inne promisy jest synchroniczne, dodawanie await przed funkcjami synchronicznymi nie zmienia ich wywołania, a jedynie zmienia moment wywołania następnych asynchronicznych tu masz przykład

Powinno być

jest synchroniczne i wszystko co się w tej funkcji dzieje do momentu w którym nie ma czekania na inne promisy jest synchroniczne,
  • Odpowiedz