You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: 1-js/11-async/02-promise-basics/article.md
+7-7Lines changed: 7 additions & 7 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -2,7 +2,7 @@
2
2
3
3
Уявіть, що ви топ співак, фани якого постійно дошкуляють запитаннями про майбутній сингл.
4
4
5
-
Щоб отримати передишку, ви обіцяєте розіслати їм сингл, коли він буде випущений. Ви даєте своїм фанатам список. В який вони можуть записати свій e-mail, на який вони отримають пісню як тільки вона вийде. І навіть якщо щось піде не так, наприклад, в студії станеться пожежа і ви не зможете випустити пісню, вони і про це отримають сповіщення.
5
+
Щоб отримати передишку, ви обіцяєте розіслати їм сингл, коли він буде випущений. Ви даєте своїм фанатам список. В який вони можуть записати свій e-mail, на який вони отримають пісню як тільки вона вийде. І навіть якщо щось піде не так, наприклад, в студії станеться пожежа і ви не зможете випустити пісню, вони й про це отримають сповіщення.
6
6
7
7
Всі щасливі: ви, тому що вам більше не дошкуляють, а фанати, тому що можуть більше не переживати що пропустять новий сингл.
8
8
@@ -12,7 +12,7 @@
12
12
2. Є код–"споживач", котрий очікує отримати результат від коду-"виробника", як тільки той буде готовий. Цей результат може знадобитися багатьом функціям. Це -- "фанати"
13
13
3.*Promise* (надалі будемо називати такий об’єкт промісом) -- це спеціальний об’єкт в JavaScript, котрий зв’язує код-"виробника" і "споживача" разом. В контексті нашої аналогії -- це "список підписки". Код-"виробник" виконується стільки часу, скільки потрібно щоб отримати результат, а проміс — як тільки результат готовий, робить його доступним для коду який підписався на конкретний проміс.
14
14
15
-
Аналогія не зовсім точна, оскільки реалізація промісів в JavaScript набагато складніша ніж простий список підписок: вони володіють додатковими можливостями і обмеженнями. Але для початку варто почати з простішого.
15
+
Аналогія не зовсім точна, оскільки реалізація промісів в JavaScript набагато складніша ніж простий список підписок: вони володіють додатковими можливостями й обмеженнями. Але для початку варто почати з простішого.
16
16
17
17
Синтаксис створення проміса:
18
18
@@ -99,7 +99,7 @@ let promise = new Promise(function(resolve, reject) {
99
99
});
100
100
```
101
101
102
-
Ідея в тому що функція виконавець може мати тільки один результат чи помилку.
102
+
Ідея в тому, що функція виконавець може мати тільки один результат чи помилку.
103
103
104
104
Зверніть увагу, що методи `resolve`/`reject` можуть прийняти тільки один аргумент (або жодного), а всі додаткові аргументи будуть проігноровані.
105
105
````
@@ -276,11 +276,11 @@ new Promise((resolve, reject) => {
276
276
277
277
У підсумку:
278
278
279
-
- Обробник `finally` не отримує результат попереднього обробника (у нього немає аргументів). Замість цього цей результат передається наступному підходящому обробнику.
279
+
- Обробник `finally` не отримує результат попереднього обробника (у нього немає аргументів). Замість цього цей результат передається наступному відповідному обробнику.
280
280
- Якщо обробник `finally` щось повертає, це буде ігноруватися.
281
281
- Якщо виникає помилка в `finally`, виконання переходить до найближчого обробника помилок.
282
282
283
-
Ці особливості є корисними і забезпечують правильну роботу, якщо ми використовуємо `finally` так, як це передбачено: для загальних процедур очищення.
283
+
Ці особливості є корисними й забезпечують правильну роботу, якщо ми використовуємо `finally` так, як це передбачено: для загальних процедур очищення.
Тепер, розгляньмо декілька прикладів з тим як проміси можуть облегшити нам написання асинхронного коду.
307
307
308
-
В нас є функція `loadScript` для завантаження скрипта з попереднього розділу.
308
+
В нас є функція `loadScript` для завантаження скрипту з попереднього розділу.
309
309
310
310
Згадаймо як виглядає варіант з колбеком:
311
311
@@ -323,7 +323,7 @@ function loadScript(src, callback) {
323
323
324
324
Тепер перепишемо її використавши проміс.
325
325
326
-
Новій функції `loadScript` більше не потрібен колбек. Замість цього вона буде створювати і повертати об’єкт проміса, котрий перейде в стан "успішно завершений", коли завантаження завершиться. Зовнішній код також може додавати обробників ("підписників") використовуючи `.then`:
326
+
Новій функції `loadScript` більше не потрібен колбек. Замість цього вона буде створювати й повертати об’єкт проміса, котрий перейде в стан "успішно завершений", коли завантаження завершиться. Зовнішній код також може додавати обробників ("підписників") використовуючи `.then`:
0 commit comments