|
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