|
1 | | -The console output is: 1 7 3 5 2 6 4. |
| 1 | +У консолі ми побачимо: 1 7 3 5 2 6 4. |
2 | 2 |
|
3 | | -The task is quite simple, we just need to know how microtask and macrotask queues work. |
| 3 | +Завдання досить просте, нам потрібно лише знати, як працюють черги мікрозадач і макрозадач. |
4 | 4 |
|
5 | | -Let's see what's going on, step by step. |
| 5 | +Подивимося, що відбувається, крок за кроком. |
6 | 6 |
|
7 | 7 | ```js |
8 | 8 | console.log(1); |
9 | | -// The first line executes immediately, it outputs `1`. |
10 | | -// Macrotask and microtask queues are empty, as of now. |
| 9 | +// Перший рядок виконується негайно і виводить `1`. |
| 10 | +// На даний момент черги макрозадач і мікрозадач порожні. |
11 | 11 |
|
12 | 12 | setTimeout(() => console.log(2)); |
13 | | -// `setTimeout` appends the callback to the macrotask queue. |
14 | | -// - macrotask queue content: |
| 13 | +// `setTimeout` додає зворотний виклик функції до черги макрозадач. |
| 14 | +// - вміст черги макрозадач: |
15 | 15 | // `console.log(2)` |
16 | 16 |
|
17 | 17 | Promise.resolve().then(() => console.log(3)); |
18 | | -// The callback is appended to the microtask queue. |
19 | | -// - microtask queue content: |
| 18 | +// Зворотний виклик функції додається до черги мікрозадач. |
| 19 | +// - вміст черги мікрозадач: |
20 | 20 | // `console.log(3)` |
21 | 21 |
|
22 | 22 | Promise.resolve().then(() => setTimeout(() => console.log(4))); |
23 | | -// The callback with `setTimeout(...4)` is appended to microtasks |
24 | | -// - microtask queue content: |
| 23 | +// Зворотний виклик функції із `setTimeout(...4)` додається до мікрозадач |
| 24 | +// - вміст черги мікрозадач: |
25 | 25 | // `console.log(3); setTimeout(...4)` |
26 | 26 |
|
27 | 27 | Promise.resolve().then(() => console.log(5)); |
28 | | -// The callback is appended to the microtask queue |
29 | | -// - microtask queue content: |
| 28 | +// Зворотний виклик додається до черги мікрозадач |
| 29 | +// - вміст черги мікрозадач: |
30 | 30 | // `console.log(3); setTimeout(...4); console.log(5)` |
31 | 31 |
|
32 | 32 | setTimeout(() => console.log(6)); |
33 | | -// `setTimeout` appends the callback to macrotasks |
34 | | -// - macrotask queue content: |
| 33 | +// `setTimeout` додає зворотний виклик функції до макрозадач |
| 34 | +// - вміст черги макрозадач: |
35 | 35 | // `console.log(2); console.log(6)` |
36 | 36 |
|
37 | 37 | console.log(7); |
38 | | -// Outputs 7 immediately. |
| 38 | +// Негайно виводить 7. |
39 | 39 | ``` |
40 | 40 |
|
41 | | -To summarize, |
| 41 | +Підведемо підсумки, |
42 | 42 |
|
43 | | -1. Numbers `1` и `7` show up immediately, because simple `console.log` calls don't use any queues. |
44 | | -2. Then, after the main code flow is finished, the microtask queue runs. |
45 | | - - It has commands: `console.log(3); setTimeout(...4); console.log(5)`. |
46 | | - - Numbers `3` и `5` show up, while `setTimeout(() => console.log(4))` adds the `console.log(4)` call to the end of the macrotask queue. |
47 | | - - The macrotask queue is now: `console.log(2); console.log(6); console.log(4)`. |
48 | | -3. After the microtask queue becomes empty, the macrotask queue executes. It outputs `2`, `6`, `4`. |
| 43 | +1. Числа `1` і `7` з’являються відразу, тому що прості виклики `console.log` не використовують жодних черг. |
| 44 | +2. Потім, після завершення основного потоку коду, запускається черга мікрозадач. |
| 45 | + - Він містить команди: `console.log(3); setTimeout(...4); console.log(5)`. |
| 46 | + - З’являються числа `3` і `5`, а `setTimeout(() => console.log(4))` додає виклик `console.log(4)` в кінець черги макрозадач. |
| 47 | + - Черга макрозадач тепер така: `console.log(2); console.log(6); console.log(4)`. |
| 48 | +3. Після того як черга мікрозадач стає порожньою, виконується черга макрозадач. І він виводить `2`, `6`, `4`. |
49 | 49 |
|
50 | | -Finally, we have the output: `1 7 3 5 2 6 4`. |
| 50 | +Нарешті, маємо у консолі: `1 7 3 5 2 6 4`. |
0 commit comments