Skip to content

Commit 681c05e

Browse files
Merge pull request #53 from smoliakov/29-translation
5-network/03-fetch-abort/article.md, translation
2 parents 6d1f57c + b06c292 commit 681c05e

File tree

1 file changed

+27
-27
lines changed

1 file changed

+27
-27
lines changed
Lines changed: 27 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,35 +1,35 @@
11

2-
# Fetch: Abort
2+
# Fetch: Прерывание запроса
33

4-
Aborting a `fetch` is a little bit tricky. Remember, `fetch` returns a promise. And JavaScript generally has no concept of "aborting" a promise. So how can we cancel a fetch?
4+
Прервать выполнение метода `fetch` немного сложно. Как вы помните, метод `fetch` возвращает промис. А в JavaScript в целом нет понятия "отмены" промиса. Итак, как можно отменить вызов `fetch`?
55

6-
There's a special built-in object for such purposes: `AbortController`.
6+
Для таких целей существует специальный встроенный объект: `AbortController`.
77

8-
The usage is pretty simple:
8+
Использовать его достаточно просто:
99

10-
- Step 1: create a controller:
10+
- Шаг 1: создаем контроллер:
1111

1212
```js
1313
let controller = new AbortController();
1414
```
1515

16-
A controller is an extremely simple object. It has a single method `abort()`, and a single property `signal`. When `abort()` is called, the `abort` event triggers on `controller.signal`:
16+
Контроллер - чрезвычайно простой объект. Он имеет единственный метод `abort()` и единственное свойство `signal`. Когда вызывается метод `abort()`, событие прерывания срабатывает на `controller.signal`:
1717

18-
Like this:
18+
Вот так:
1919

2020
```js run
2121
let controller = new AbortController();
2222
let signal = controller.signal;
2323
24-
// triggers when controller.abort() is called
25-
signal.addEventListener('abort', () => alert("abort!"));
24+
// срабатывает при вызове controller.abort()
25+
signal.addEventListener('abort', () => alert("прервать!"));
2626
27-
controller.abort(); // abort!
27+
controller.abort(); // прервать!
2828
29-
alert(signal.aborted); // true (after abort)
29+
alert(signal.aborted); // true (после прерывания)
3030
```
3131

32-
- Step 2: pass the `signal` property to `fetch` option:
32+
- Шаг 2: передайте свойство `signal` опцией в метод `fetch`:
3333

3434
```js
3535
let controller = new AbortController();
@@ -38,20 +38,20 @@ The usage is pretty simple:
3838
});
3939
```
4040

41-
Now `fetch` listens to the signal.
41+
Теперь метод `fetch` слушает сигнал.
4242

43-
- Step 3: to abort, call `controller.abort()`:
43+
- Шаг 3: чтобы прервать выполнение `fetch`, вызовите `controller.abort()`:
4444

4545
```js
4646
controller.abort();
4747
```
4848

49-
We're done: `fetch` gets the event from `signal` and aborts the request.
49+
Вот и всё: `fetch` получает событие из `signal` и прерывает запрос.
5050

51-
When a fetch is aborted, its promise rejects with an error named `AbortError`, so we should handle it:
51+
Когда `fetch` прерывается, его промис отклоняется с ошибкой `AbortError`, поэтому мы должны обработать ее:
5252

5353
```js run async
54-
// abort in 1 second
54+
// прервать через 1 секунду
5555
let controller = new AbortController();
5656
setTimeout(() => controller.abort(), 1000);
5757
@@ -60,20 +60,20 @@ try {
6060
signal: controller.signal
6161
});
6262
} catch(err) {
63-
if (err.name == 'AbortError') { // handle abort()
64-
alert("Aborted!");
63+
if (err.name == 'AbortError') { // обработь ошибку от вызова abort()
64+
alert("Прервано!");
6565
} else {
6666
throw err;
6767
}
6868
}
6969
```
7070

71-
**`AbortController` is scalable, it allows to cancel multiple fetches at once.**
71+
**`AbortController` - масштабируемый, он позволяет отменить несколько вызовов `fetch` одновременно.**
7272

73-
For instance, here we fetch many `urls` in parallel, and the controller aborts them all:
73+
Например, здесь мы запрашиваем много URL параллельно, и контроллер прерывает их все:
7474

7575
```js
76-
let urls = [...]; // a list of urls to fetch in parallel
76+
let urls = [...]; // список URL для запроса параллельно
7777
7878
let controller = new AbortController();
7979
@@ -83,11 +83,11 @@ let fetchJobs = urls.map(url => fetch(url, {
8383
8484
let results = await Promise.all(fetchJobs);
8585
86-
// from elsewhere:
87-
// controller.abort() stops all fetches
86+
// вызов откуда-нибудь еще:
87+
// controller.abort() прерывает все вызовы `fetch`
8888
```
8989

90-
If we have our own jobs, different from `fetch`, we can use a single `AbortController` to stop those, together with fetches.
90+
Если у нас есть собственные задачи, отличные от `fetch`, мы можем использовать один `AbortController` для их остановки вместе с `fetch`.
9191

9292

9393
```js
@@ -105,6 +105,6 @@ let fetchJobs = urls.map(url => fetch(url, {
105105
106106
let results = await Promise.all([...fetchJobs, ourJob]);
107107
108-
// from elsewhere:
109-
// controller.abort() stops all fetches and ourJob
108+
// вызов откуда-нибудь еще:
109+
// controller.abort() прерывает все вызовы `fetch` и наши задачи
110110
```

0 commit comments

Comments
 (0)