Skip to content

Commit fdf4ea3

Browse files
committed
1-js/11-async/08-async-await translated - fix #3
1 parent 06500d4 commit fdf4ea3

1 file changed

Lines changed: 8 additions & 8 deletions

File tree

1-js/11-async/08-async-await/article.md

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ f().then(alert); // 1
4545
let value = await promise;
4646
```
4747

48-
Ключевое слово `await` заставит интерпретатор JavaScript "встать на паузу" до тех пор, пока промис справа от `await` не выполнится. После чего он вернёт свой результат и выполнение кода продолжится.
48+
Ключевое слово `await` заставит интерпретатор JavaScript ждать до тех пор, пока промис справа от `await` не выполнится. После чего он вернёт свой результат и выполнение кода продолжится.
4949

5050
В этом примере промис успешно выполнится через 1 секунду:
5151

@@ -143,8 +143,8 @@ let user = await response.json();
143143
144144
145145
````
146-
````smart header="`await` работает с объектами типа \"thenable\""
147-
Любой объект может не быть промисом, но реализовать их интерфейс (быть промис-совместимым). Если у объекта можно вызвать метод `then`, этого достаточно, чтобы использовать его с `await`.
146+
````smart header="`await` работает с объектами \"thenable\"–объектами"
147+
Как и `promise.then`, `await` позволяет работать с промис–совместимыми объектами. Идея в том, что если у объекта можно вызвать метод `then`, этого достаточно, чтобы использовать его с `await`.
148148

149149
В примере ниже, экземпляры класса `Thenable` будут работать вместе с `await`:
150150

@@ -161,7 +161,7 @@ class Thenable {
161161
};
162162

163163
async function f() {
164-
// код "встанет на паузу" на 1 секунду,
164+
// код будет ждать 1 секунду,
165165
// после чего значение result станет равным 2
166166
let result = await new Thenable(1);
167167
alert(result);
@@ -170,7 +170,7 @@ async function f() {
170170
f();
171171
```
172172

173-
Когда `await` получает объект с `.then` (не являющийся промисом), JavaScript автоматически запускает этот метод, передавая ему аргументы – встроенные функции `resolve` и `reject`. `await` приостановит дальнейшее выполнение кода, пока любая из этих функций не будет вызвана (в примере, это строка `(*)`). После чего выполнение кода продолжится с результатом `resolve` или `reject` соответственно.
173+
Когда `await` получает объект с `.then`, не являющийся промисом, JavaScript автоматически запускает этот метод, передавая ему аргументы – встроенные функции `resolve` и `reject`. Затем `await` приостановит дальнейшее выполнение кода, пока любая из этих функций не будет вызвана (в примере, это строка `(*)`). После чего выполнение кода продолжится с результатом `resolve` или `reject` соответственно.
174174
````
175175
176176
````smart header="Асинхронные методы"
@@ -216,7 +216,7 @@ async function f() {
216216
}
217217
```
218218

219-
Но есть отличие, промис может завершиться с ошибкой не сразу, а через некоторое время. В этом случае `await` дождётся его завершения и только потом выбросит исключение.
219+
Но есть отличие, на практике промис может завершиться с ошибкой не сразу, а через некоторое время. В этом случае `await` дождётся его завершения и только потом выбросит исключение.
220220

221221
Такие ошибки можно отлавливать, используя `try..catch`, как будто это обычный `throw`:
222222

@@ -268,7 +268,7 @@ f().catch(alert); // TypeError: failed to fetch // (*)
268268
Если забыть добавить `.catch` возвращаемому `rejected`–промису, будет сгенерирована ошибка "Uncaught promise error" и информация об этом будет выведена в консоль. Такие ошибки тоже можно отловить и обработать, об этом подробно написано в разделе <info:promise-error-handling>.
269269

270270
```smart header="`async/await` и `promise.then/catch`"
271-
При работе с `async/await`, `.then` используется не часто, так как `await` автоматически ожидает завершения выполнения промиса. В этом случае, обычно (но не всегда) гораздо удобнее перехватывать ошибки используя `try..catch`, нежели чем `.catch`.
271+
При работе с `async/await`, `.then` используется нечасто, так как `await` автоматически ожидает завершения выполнения промиса. В этом случае, обычно (но не всегда) гораздо удобнее перехватывать ошибки используя `try..catch`, нежели чем `.catch`.
272272

273273
Но на верхнем уровне вложенности (вне `async`–функций) `await` использовать нельзя, поэтому `.then/catch` для обработки финального результата или ошибок – обычная практика.
274274

@@ -299,7 +299,7 @@ let results = await Promise.all([
299299
300300
Например, мы сделали два вызова:
301301
- `setTimeout(handler, 0)`, который запустит `handler` с нулевой задержкой.
302-
- `let x = await f()`, функция `f()` – асинхронная, но вернёт resolved промис сразу же.
302+
- `let x = await f()`, функция `f()` – асинхронная, но вернёт завершившийся успешно промис сразу же.
303303
304304
Что выполнится сначала, если `await` находится *ниже* по коду, чем `setTimeout`?
305305

0 commit comments

Comments
 (0)