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: 5-network/03-fetch-abort/article.md
+6-6Lines changed: 6 additions & 6 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,11 +1,11 @@
1
1
2
2
# Fetch: Прерывание запроса
3
3
4
-
Прервать выполнение метода `fetch` немного сложно. Помните, метод `fetch` возвращает промис. А в JavaScript, в целом, нет понятия "отмены" промиса. Итак, как мы можем отменить выполнение`fetch`?
4
+
Прервать выполнение метода `fetch` немного сложно. Помните, метод `fetch` возвращает промис. А в JavaScript в целом нет понятия "отмены" промиса. Итак, как можно отменить вызов`fetch`?
5
5
6
6
Для таких целей существует специальный встроенный объект: `AbortController`.
7
7
8
-
Использование довольно простое:
8
+
Использовать его достаточно просто:
9
9
10
10
- Шаг 1: создаем контроллер:
11
11
@@ -15,7 +15,7 @@
15
15
16
16
Контроллер - чрезвычайно простой объект. Он имеет единственный метод `abort()` и единственное свойство `signal`, которое генерирует событие, когда вызывается `abort()`:
17
17
18
-
Мы даже можем использовать его без `fetch` для наших собственных целей, например, так:
18
+
Мы даже можем использовать его без `fetch` для своих задач, например, так:
19
19
20
20
```js run
21
21
let controller = new AbortController();
@@ -48,7 +48,7 @@
48
48
49
49
Вот и всё:`fetch` получает событие из `signal` и прерывает запрос.
50
50
51
-
Когда `fetch` прерывается, его промис отклоняется с ошибкой AbortError, поэтому мы должны обработать ее:
51
+
Когда `fetch` прерывается, его промис отклоняется с ошибкой `AbortError`, поэтому мы должны обработать ее:
52
52
53
53
```js run async
54
54
// прервать через 1 секунду
@@ -68,7 +68,7 @@ try {
68
68
}
69
69
```
70
70
71
-
**AbortController является масштабируемым, он позволяет отменить несколько вызовов `fetch` одновременно.**
71
+
**`AbortController`- масштабируемый, поэтому позволяет отменить несколько вызовов `fetch` одновременно.**
72
72
73
73
Например, здесь мы запрашиваем много `url` параллельно, и контроллер прерывает их все:
74
74
@@ -87,7 +87,7 @@ let results = await Promise.all(fetchJobs);
87
87
// controller.abort() прерывает все вызовы `fetch`
88
88
```
89
89
90
-
Если у нас есть собственные задачи, отличные от `fetch`, мы можем использовать один AbortController для их остановки вместе с `fetch`.
90
+
Если у нас есть собственные задачи, отличные от `fetch`, мы можем использовать один `AbortController` для их остановки вместе с `fetch`.
0 commit comments