Seria · 4 części · ~59 min czytania
Async JavaScript: jak silnik wykonuje twój asynchroniczny kod
Cztery posty budują model async od fundamentów: event loop, promises jako maszyna stanów, async/await i generators - mechanizm pause/resume pod spodem.
- 01
Event Loop w JavaScript - jak silnik decyduje, co odpalić następne
Przeczytane NastępneJavaScript ma jeden wątek, ale potrafi czekać na wiele rzeczy równocześnie. Sekret to event loop - prosty algorytm, który wybiera, co odpalić, gdy stack jest pusty. Microtaski wyprzedzają taski, render wpasowuje się między cyklami, a kolejność wykonania zaczyna mieć logiczny sens.
16 min czytania Czytaj → - 02
Promises w JavaScript - od callback hell do microtask queue
Przeczytane NastępneAsync w JS bez Promise to callback hell - kod nie ma jak odwoływać się do trwającej operacji, a obsługa błędów siedzi osobno w każdym callbacku. Promise to obietnica wartości, która przyjdzie później - kod układa się płasko, a błędy łapiesz w jednym miejscu.
23 min czytania Czytaj → - 03
async/await w JavaScript - jak funkcja może czekać bez blokowania wątku
Przeczytane Następneasync/awaitwygląda jak magia: piszeszawait fetch(...), dostajesz wynik w kolejnej linijce, a wątek nie blokuje się ani na moment. Pod spodem nie ma magii - jest stary wzorzec generator + Promise + auto-runner, ukryty pod nowymi słowamiasynciawait.10 min czytania Czytaj → - 04
Generators w JavaScript - funkcja, która umie się zatrzymać
Przeczytane NastępneZwykła funkcja w JS leci od góry do dołu, zwraca wynik i znika z pamięci. Generator jest inny - oznaczony
function*, na każdymyieldzatrzymuje swoje wykonanie, oddaje wartość i czeka na kolejne.next(). Mała zmiana w runtime, ale to ona stoi za sekwencjami liczonymi na żądanie i pod spodemasync/await.10 min czytania Czytaj →