|
1 | 1 |
|
2 | 2 | # Ланцюжок промісів |
3 | 3 |
|
4 | | -Повернемося до проблеми, згаданої в розділі [Введення: колбеки](info:callbacks): у нас є послідовність асинхронних задач, які потрібно виконувати одну за одною — наприклад, завантаження скриптів. Як ми можемо це добре закодувати? |
| 4 | +Повернемося до проблеми, згаданої в розділі <info:callbacks>: у нас є послідовність асинхронних задач, які потрібно виконувати одну за одною — наприклад, завантаження скриптів. Як ми можемо це добре закодувати? |
5 | 5 |
|
6 | 6 | Проміси надають кілька способів вирішення подібних задач. |
7 | 7 |
|
@@ -36,7 +36,7 @@ new Promise(function(resolve, reject) { |
36 | 36 |
|
37 | 37 | Ось потік виконання: |
38 | 38 | 1. Початковий проміс успішно виконується через 1 секунду `(*)`, |
39 | | -2. Далі викликається обробник `.then` `(**)`, який у свою чергу, створює новий проміс (вирішується зі значенням `2`). |
| 39 | +2. Далі на `(**)` викликається обробник `.then`, який у свою чергу, створює новий проміс (вирішується зі значенням `2`). |
40 | 40 | 3. Наступний `then` `(***)` приймає результат попереднього, оброблює його (подвоює) та передає до наступного обробника. |
41 | 41 | 4. ...і так далі. |
42 | 42 |
|
@@ -78,7 +78,7 @@ promise.then(function(result) { |
78 | 78 |
|
79 | 79 |  |
80 | 80 |
|
81 | | -Усі `.then` на одному й тому самому промісі отримують той самий результат - результат цього промісу. Тож у коді вище усі `alert` показують те саме: `1`. |
| 81 | +Усі `.then` на одному й тому самому промісі отримують той самий результат -- результат цього промісу. Тож у коді вище усі `alert` показують те саме: `1`. |
82 | 82 |
|
83 | 83 | На практиці нам рідко потрібні кілька обробників для одного промісу. Набагато частіше використовується ланцюжок. |
84 | 84 |
|
@@ -120,7 +120,7 @@ new Promise(function(resolve, reject) { |
120 | 120 | }); |
121 | 121 | ``` |
122 | 122 |
|
123 | | -Тут перший `.then` показує `1` і повертає `new Promise(…)` у рядку `(*)`. Через одну секунду він вирішується, а результат (аргумент `resolve`, тут це `результат * 2`) передається обробнику другого `.then`. Цей обробник знаходиться в рядку `(**)`, він показує `2` і робить те ж саме. |
| 123 | +Тут перший `.then` показує `1` і повертає `new Promise(…)` у рядку `(*)`. Через одну секунду він вирішується, а результат (аргумент `resolve`, тут це `result * 2`) передається обробнику другого `.then`. Цей обробник знаходиться в рядку `(**)`, він показує `2` і робить те ж саме. |
124 | 124 |
|
125 | 125 | Отже, результат такий же, як і в попередньому прикладі: 1 -> 2 -> 4, але тепер із затримкою в 1 секунду між викликами `alert`. |
126 | 126 |
|
|
0 commit comments