ეს არის თანდათან უკეთესი გზები non-blocking სამუშაოს გამოსახატავად ერთ thread-ზე, ყველა მართული ქვემოთ event loop-ით, რომელიც უშვებს მზა callback-ებს თითო-თითოდ. ისინი მართავენ, როდის განახლდება კოდი და არა მრავალ thread-ს.
Event loop
ერთ-thread-იანი loop ინახავს მზა callback-ების queue-ს. როცა async ოპერაცია (timer, I/O) სრულდება, მისი callback ჩაირიცხება queue-ში; loop იღებს მომდევნოს და უშვებს მას დასრულებამდე, შემდეგ იმეორებს. არაფერი წყვეტს მიმდინარე callback-ს, ამიტომ ხანგრძლივი CPU სამუშაო ბლოკავს ყველაფერს.
[event loop] → run callback → I/O finishes → enqueue callback → run next → ...
