BikBoom
BikBoom
#javascript #nodejs #frontend
console.log("1");
myFunction().then(()=>console.log("4"));
console.log("3");
async function myFunction(){await console.log("2"); }
Ktoś wie czemu funkcja asychroniczna wykona sie przed console.log("3");?
  • Najlepsze
  • Wszystkie komentarze
lobo
lobo
3
@BikBoom: Albo krokowo ci opiszę

console.log("1");
Odpala się standardowa synchroniczna
lobo
lobo
1
@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ś
lobo
lobo
1
@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
Marmite
@BikBoom: a czemu miałaby się nie wykonać skoro wywołujesz ja linijkę wcześniej?
BikBoom
BikBoom
BikBoom Autor
0
@lobo: thx super wytłumaczone
lobo
lobo
0
@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, dodawanie await
mirasKo-Kalwario
mirasKo-Kalwario
@BikBoom: bo event loop, w skrócie eventloop to kilka kolejek które sa opróżniane w pewnej kolejnosci a miedzy opróżnieniem tych kolejek jest opróżniana za każdym razem kolejka mikrotasków - kolejka mikrotasków zawiera dwie rzeczy:
1. rzeczy wywolane przez nextTick
2. Promisy

więcej info tutaj -> https://www.builder.io/blog/visual-guide-to-nodejs-event-loop
mirasKo-Kalwario
mirasKo-Kalwario
ale wyjasnienie od @lobo też dobre