Skip to content

Commit 9fb8df3

Browse files
committed
fixed typos and simplified explanation
**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.
1 parent a62746d commit 9fb8df3

File tree

1 file changed

+11
-12
lines changed

1 file changed

+11
-12
lines changed

1-js/11-async/01-callbacks/article.md

Lines changed: 11 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,10 @@
77
88
Якщо ви не знайомі з цими методами, і їх використання в прикладах викликає заплутаність, ви можете прочитати кілька розділів з [наступної частини](/document) підручника.
99
10-
Хоча ми все одно спробуємо все прояснити. У браузері не буде нічого складного.
10+
Хоча ми все одно спробуємо все прояснити. Ми будемо використовувати лише прості можливості браузера.
1111
```
1212

13-
Багато функцій надаються середовищами JavaScript, які дозволяють планувати *асинхронні* дії. Тобто дії, які ми починаємо зараз, але закінчуємо пізніше.
13+
Середовища JavaScript пропонують багато функцій, які дозволяють планувати *асинхронні* дії. Тобто дії, які ми ініціюємо зараз, але які виконуються пізніше.
1414

1515
Наприклад, однією з таких функцій є `setTimeout`.
1616

@@ -28,7 +28,7 @@ function loadScript(src) {
2828
}
2929
```
3030

31-
Вона вставляє в документ новий, динамічно створений тег `<script src="…">` із заданим `src`. Браузер автоматично почне завантажувати його, після завершення чого запустить.
31+
Вона вставляє в документ новий, динамічно створений тег `<script src="…">` із заданим `src`. Браузер автоматично почне завантажувати його і після завершення завантаження одразу ж запустить.
3232

3333
Ми можемо використовувати цю функцію таким чином:
3434

@@ -37,7 +37,7 @@ function loadScript(src) {
3737
loadScript('/my/script.js');
3838
```
3939

40-
Скрипт виконується "асинхронно", оскільки він починає завантажуватися зараз, але запускається пізніше, коли функція вже завершить виконання.
40+
Скрипт виконується "асинхронно", оскільки завантажуватися він починає зараз, але запускається пізніше, коли функція вже завершить виконання.
4141

4242
Якщо нижче `loadScript(...)` буде будь-який код, він не чекатиме, доки завершиться завантаження скрипту.
4343

@@ -60,7 +60,7 @@ newFunction(); // немає такої функції!
6060
*/!*
6161
```
6262

63-
Природно, браузер, ймовірно, не встиг завантажити скрипт. На даний момент функція `loadScript` не надає можливості відстежувати завершення завантаження. Скрипт завантажується та зрештою запускається, ось і все. Але ми хотіли б знати, коли це станеться, використовувати нові функції та змінні з цього скрипту.
63+
Природно, браузер, ймовірно, не встиг завантажити скрипт. На даний момент функція `loadScript` не надає можливості відстежувати завершення завантаження. Скрипт просто завантажується та зрештою запускається, це й все. Але ми хотіли б знати коли це станеться, щоб могти після цього використовувати нові функції та змінні з цього скрипту.
6464

6565
Додаймо `callback`-функцію як другий аргумент до `loadScript`, яка має виконуватися, коли скрипт завантажується:
6666

@@ -77,8 +77,7 @@ function loadScript(src, *!*callback*/!*) {
7777
}
7878
```
7979

80-
Подія `onload` описана в статті <info:onload-onerror#loading-a-script>,
81-
і це спосіб виконати функцію після завантаження та виконання скрипту.
80+
Подія `onload` описана в статті <info:onload-onerror#loading-a-script>. Якщо коротко, то ця подія виконує функцію після того, як скрипт був завантажений і виконаний.
8281

8382
Тепер, якщо ми хочемо викликати нові функції зі скрипту, то повинні написати це у колбеку:
8483

@@ -110,13 +109,13 @@ loadScript('https://cdnjs.cloudflare.com/ajax/libs/lodash.js/3.2.0/lodash.js', s
110109
*/!*
111110
```
112111

113-
Такий стиль називається "асинхронним програмуванням на основі колбеків" ("callback-based"). Функція, яка виконує щось асинхронно, повинна містити аргумент `callback`, де ми запускаємо функцію після завершення асинхронної дії.
112+
Такий стиль називається "асинхронним програмуванням на базі колбеків" ("callback-based"). Функція, яка виконує щось асинхронно, повинна містити аргумент `callback`, де ми запускаємо функцію після завершення асинхронної дії.
114113

115-
Тут ми зробили це в `loadScript`, але, звичайно, це поширений підхід.
114+
Тут ми зробили це лише в `loadScript`, але, звичайно, це можна зробити ще в багатьох місцях.
116115

117116
## Колбек у колбеку
118117

119-
Як ми можемо завантажити два скрипти послідовно: перший, а потім другий після нього?
118+
Як ми можемо завантажити два скрипти послідовно: спочатку перший, а потім другий після нього?
120119

121120
Природним рішенням було б помістити другий виклик `loadScript` усередину колбека, наприклад:
122121

@@ -189,7 +188,7 @@ loadScript('/my/script.js', function(error, script) {
189188
});
190189
```
191190

192-
Знову ж таки, рецепт, який ми використовували для `loadScript`, насправді досить поширений. Такий стиль називається "колбек з першим аргументом-помилкою" ("error-first callback").
191+
Знову ж таки, рецепт, який ми використовували для `loadScript`, насправді досить поширений. Такий стиль називається "спершу колбек з помилкою" ("error-first callback").
193192

194193
Домовленість така:
195194
1. Перший аргумент `callback` зарезервовано для помилки, якщо вона виникає. В такому випадку викликається `callback(err)`.
@@ -261,7 +260,7 @@ loadScript('1.js', function(error, script) {
261260

262261
"Піраміда" вкладених викликів зростає вправо з кожною асинхронною дією. Незабаром це виходить з-під контролю.
263262

264-
Так що цей спосіб кодування не дуже хороший.
263+
Тому цей спосіб кодування не дуже хороший.
265264

266265
Ми можемо спробувати зменшити проблему, зробивши кожну дію окремою функцією, наприклад:
267266

0 commit comments

Comments
 (0)