File tree Expand file tree Collapse file tree 2 files changed +54
-0
lines changed
2-ui/99-ui-misc/03-event-loop/2-promise-and-timer-2 Expand file tree Collapse file tree 2 files changed +54
-0
lines changed Original file line number Diff line number Diff line change 1+ Вывод в консоли:
2+ 1
3+ 7
4+ 3
5+ 5
6+ 2
7+ 6
8+ 4
9+
10+ Давайте разберем что здесь происходит.
11+
12+ Сразу исполняются функции стоящие в стеке первой макрозадачи - главного скрипта.
13+ Вывод в консоль: "1" .
14+
15+ В второй строке ` setTimeout ` , который ставит переданный колбэк в очередь макрозадач (macrotask queue) на выполнение.("2")
16+ Далее происходит аналогичная операция в шестой строке.("6")
17+
18+ Вывод в консоль: "7".
19+ Конец первой макрозадачи.
20+
21+ Переходим в область микрозадач, происходит выполнение всех микрозадач:
22+ 1 . Вывод в консоль: "3".
23+ 2 . Создаётся макрозадача setTimeout, которая ставится в очередь уже имеющеёся макрозадачи.("4")
24+ 3 . Вывод в консоль: "5".
25+ Стек микрозадач пуст.
26+
27+ Продолжается выполнение кода из очереди макрозадач:
28+ Вывод в консоль: "2".
29+ Вывод в консоль: "6".
30+ Вывод в консоль: "4".
31+
32+
Original file line number Diff line number Diff line change 1+ importance: 5
2+
3+ ---
4+
5+ # Что код выведет в консоли?
6+
7+ ``` js
8+ console .log (1 );
9+
10+ setTimeout (() => console .log (2 ));
11+
12+ Promise .resolve ().then (() => console .log (3 ));
13+
14+ Promise .resolve ().then (() => setTimeout (() => console .log (4 )));
15+
16+ Promise .resolve ().then (() => console .log (5 ));
17+
18+ setTimeout (() => console .log (6 ));
19+
20+ console .log (7 );
21+ ```
22+
You can’t perform that action at this time.
0 commit comments