Skip to content

Commit 46bf2c5

Browse files
authored
Apply suggestions from code review
1 parent 4fc947b commit 46bf2c5

1 file changed

Lines changed: 7 additions & 10 deletions

File tree

1-js/11-async/03-promise-chaining/article.md

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ promise.then(function(result) {
7272
});
7373
```
7474

75-
Те, що ми зробили тут -- це просто додали кілька обробників до одного промісу. Вони не передають результат один одному по ланцюжку. Вони кожен по своєму обробляють результат одного і того ж проміса.
75+
Те, що ми зробили тут -- це просто додали кілька обробників до одного промісу. Вони не передають результат один одному ланцюжком. Натомість кожен по своєму обробляє результат одного і того ж проміса.
7676

7777
Ось малюнок (порівняйте його з ланцюжком вище):
7878

@@ -216,7 +216,7 @@ new Promise(resolve => resolve(1))
216216
.then(alert); // показує 2 через 1000 мс
217217
```
218218
219-
JavaScript перевіряє об’єкт, повернутий обробником `.then` у рядку `(*)`: якщо він має придатний до викликання метод з ім’ям `then`, тоді він викликає цей метод, та передає йому власні функції `resolve`, `reject` як аргументи (подібно виконавцю) і чекає, поки один з них не буде викликаний. У наведеному вище прикладі `resolve(2)` викликається через 1 секунду `(**)`. Потім результат передається далі по ланцюжку.
219+
JavaScript перевіряє об’єкт, повернутий обробником `.then` у рядку `(*)`: якщо він має придатний до виклику метод з ім’ям `then`, тоді він викликає цей метод, та передає йому власні функції `resolve`, `reject` як аргументи (подібно виконавцю) і чекає, поки один з них не буде викликаний. У наведеному вище прикладі `resolve(2)` викликається через 1 секунду `(**)`. Потім результат передається далі по ланцюжку.
220220
221221
Ця функція дозволяє нам інтегрувати власні об’єкти з ланцюжками промісів без успадкування від `Promise`.
222222
````
@@ -232,18 +232,15 @@ JavaScript перевіряє об’єкт, повернутий обробни
232232
let promise = fetch(url);
233233
```
234234

235-
Зазначений код робить мережевий запит до `url` і повертає проміс. Цей проміс переходить в стан "fullfilled" і його value стає об'єкт `response` (іншими словами, проміс завершується об'єктом `response`) як тільки-но віддалений сервер присилає заголовки, але ще *до завантаження повної відповіді*.
235+
Зазначений код робить мережевий запит до `url` і повертає проміс. Цей проміс переходить в стан "fullfilled" і його `value` стає об'єкт `response` (іншими словами, проміс завершується об'єктом `response`) як тільки віддалений сервер присилає заголовки, але ще *до завантаження повної відповіді*.
236236

237-
Щоб прочитати повну відповідь, ми повинні викликати метод `response.text()`. Цей метод повертає проміс.
238-
Цей проміс (який ми отримуємо як результат метода `response.text()`):
239-
1. Завершується аж тоді, коли з віддаленого сервера завантажується увесь текст, не лише заголовки.
240-
2. Після завершення він містить той текст в якості результату.
237+
Щоб прочитати повну відповідь, ми повинні викликати метод `response.text()`, він в свою чергу повертає новий проміс. Цей новий проміс завершується лише тоді, коли з віддаленого сервера завантажується увесь текст, не лише заголовки. Після завершення він буде містити весь текст відповіді в якості результату.
241238

242239
Наведений нижче код робить запит до `user.json` і завантажує його текст із сервера:
243240

244241
```js run
245242
fetch('/article/promise-chaining/user.json')
246-
// .then нижче запускається, коли віддалений сервер прислав заголовки
243+
// .then нижче запускається, коли віддалений сервер надіслав заголовки
247244
.then(function(response) {
248245
// response.text() повертає новий проміс, який завершується повним текстом відповіді,
249246
// після того, як текст повністю завантажиться
@@ -255,7 +252,7 @@ fetch('/article/promise-chaining/user.json')
255252
});
256253
```
257254

258-
Об’єкт `response`, повернутий із `fetch`, також має метод `response.json()`, який парсить отриманий текст і зберігає його у форматі JSON. У нашому випадку він ще зручніший чим метод `response.text()`, тому далі будемо користуватись ним.
255+
Об’єкт `response`, повернутий із `fetch`, також має метод `response.json()`, який обробляє отриманий текст і зберігає його у форматі JSON. У нашому випадку він ще зручніший за метод `response.text()`, тому далі будемо використовувати саме його.
259256

260257
Ми також будемо використовувати стрілкові функції для стислості:
261258

@@ -324,7 +321,7 @@ fetch('/article/promise-chaining/user.json')
324321

325322
Тобто обробник `.then` у рядку `(*)` тепер повертає `new Promise`, який перейде у стан "виконаний" лише після виклику `resolve(githubUser)` у `setTimeout` `(**)`. Наступний `.then` в ланцюжку буде чекати цього.
326323

327-
Гарним тоном буде писати код так, щоб асинхронна дія завжди повертала проміс. Це даватиме можливість іншим програмістам після вас планувати наступні дії після тієї асинхронної дії; навіть якщо ми не плануємо розширювати ланцюжок зараз, можливо, це нам знадобиться пізніше.
324+
Гарним тоном буде писати код так, щоб асинхронна дія завжди повертала проміс. Це дає можливість іншим програмістам після вас планувати наступні дії, які зможуть почекати завершення попередньої; навіть якщо ми не плануємо розширювати ланцюжок зараз, можливо, це нам знадобиться пізніше.
328325

329326
Ну а зараз ми можемо розділити код на функції, що можуть бути перевикористані:
330327

0 commit comments

Comments
 (0)