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
**In chapter 01-11-01 callbacks**
There were many mistakes.
And some of sentences were correct, but they were "unnatural" in Ukrainian and make understanding more difficult.
Copy file name to clipboardExpand all lines: 1-js/11-async/01-callbacks/article.md
+11-12Lines changed: 11 additions & 12 deletions
Original file line number
Diff line number
Diff line change
@@ -7,10 +7,10 @@
7
7
8
8
Якщо ви не знайомі з цими методами, і їх використання в прикладах викликає заплутаність, ви можете прочитати кілька розділів з [наступної частини](/document) підручника.
9
9
10
-
Хоча ми все одно спробуємо все прояснити. У браузері не буде нічого складного.
10
+
Хоча ми все одно спробуємо все прояснити. Ми будемо використовувати лише прості можливості браузера.
11
11
```
12
12
13
-
Багато функцій надаються середовищами JavaScript, які дозволяють планувати *асинхронні* дії. Тобто дії, які ми починаємо зараз, але закінчуємо пізніше.
13
+
Середовища JavaScript пропонують багато функцій, які дозволяють планувати *асинхронні* дії. Тобто дії, які ми ініціюємо зараз, але які виконуються пізніше.
14
14
15
15
Наприклад, однією з таких функцій є `setTimeout`.
16
16
@@ -28,7 +28,7 @@ function loadScript(src) {
28
28
}
29
29
```
30
30
31
-
Вона вставляє в документ новий, динамічно створений тег `<script src="…">` із заданим `src`. Браузер автоматично почне завантажувати його, після завершення чого запустить.
31
+
Вона вставляє в документ новий, динамічно створений тег `<script src="…">` із заданим `src`. Браузер автоматично почне завантажувати його і після завершення завантаження одразу ж запустить.
32
32
33
33
Ми можемо використовувати цю функцію таким чином:
34
34
@@ -37,7 +37,7 @@ function loadScript(src) {
37
37
loadScript('/my/script.js');
38
38
```
39
39
40
-
Скрипт виконується "асинхронно", оскільки він починає завантажуватися зараз, але запускається пізніше, коли функція вже завершить виконання.
40
+
Скрипт виконується "асинхронно", оскільки завантажуватися він починає зараз, але запускається пізніше, коли функція вже завершить виконання.
41
41
42
42
Якщо нижче `loadScript(...)` буде будь-який код, він не чекатиме, доки завершиться завантаження скрипту.
43
43
@@ -60,7 +60,7 @@ newFunction(); // немає такої функції!
60
60
*/!*
61
61
```
62
62
63
-
Природно, браузер, ймовірно, не встиг завантажити скрипт. На даний момент функція `loadScript` не надає можливості відстежувати завершення завантаження. Скрипт завантажується та зрештою запускається, ось і все. Але ми хотіли б знати, коли це станеться, використовувати нові функції та змінні з цього скрипту.
63
+
Природно, браузер, ймовірно, не встиг завантажити скрипт. На даний момент функція `loadScript` не надає можливості відстежувати завершення завантаження. Скрипт просто завантажується та зрештою запускається, це й все. Але ми хотіли б знати коли це станеться, щоб могти після цього використовувати нові функції та змінні з цього скрипту.
64
64
65
65
Додаймо `callback`-функцію як другий аргумент до `loadScript`, яка має виконуватися, коли скрипт завантажується:
66
66
@@ -77,8 +77,7 @@ function loadScript(src, *!*callback*/!*) {
77
77
}
78
78
```
79
79
80
-
Подія `onload` описана в статті <info:onload-onerror#loading-a-script>,
81
-
і це спосіб виконати функцію після завантаження та виконання скрипту.
80
+
Подія `onload` описана в статті <info:onload-onerror#loading-a-script>. Якщо коротко, то ця подія виконує функцію після того, як скрипт був завантажений і виконаний.
82
81
83
82
Тепер, якщо ми хочемо викликати нові функції зі скрипту, то повинні написати це у колбеку:
84
83
@@ -110,13 +109,13 @@ loadScript('https://cdnjs.cloudflare.com/ajax/libs/lodash.js/3.2.0/lodash.js', s
110
109
*/!*
111
110
```
112
111
113
-
Такий стиль називається "асинхронним програмуванням на основі колбеків" ("callback-based"). Функція, яка виконує щось асинхронно, повинна містити аргумент `callback`, де ми запускаємо функцію після завершення асинхронної дії.
112
+
Такий стиль називається "асинхронним програмуванням на базі колбеків" ("callback-based"). Функція, яка виконує щось асинхронно, повинна містити аргумент `callback`, де ми запускаємо функцію після завершення асинхронної дії.
114
113
115
-
Тут ми зробили це в `loadScript`, але, звичайно, це поширений підхід.
114
+
Тут ми зробили це лише в `loadScript`, але, звичайно, це можна зробити ще в багатьох місцях.
116
115
117
116
## Колбек у колбеку
118
117
119
-
Як ми можемо завантажити два скрипти послідовно: перший, а потім другий після нього?
118
+
Як ми можемо завантажити два скрипти послідовно: спочатку перший, а потім другий після нього?
120
119
121
120
Природним рішенням було б помістити другий виклик `loadScript` усередину колбека, наприклад:
Знову ж таки, рецепт, який ми використовували для `loadScript`, насправді досить поширений. Такий стиль називається "колбек з першим аргументом-помилкою" ("error-first callback").
191
+
Знову ж таки, рецепт, який ми використовували для `loadScript`, насправді досить поширений. Такий стиль називається "спершу колбек з помилкою" ("error-first callback").
193
192
194
193
Домовленість така:
195
194
1. Перший аргумент `callback` зарезервовано для помилки, якщо вона виникає. В такому випадку викликається `callback(err)`.
0 commit comments