Skip to content

Commit 3c89c00

Browse files
authored
Merge pull request #139 from HachemiH/master
Fetch: Abort
2 parents 6c44006 + 6145d9b commit 3c89c00

File tree

1 file changed

+30
-30
lines changed

1 file changed

+30
-30
lines changed

5-network/04-fetch-abort/article.md

Lines changed: 30 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1,42 +1,42 @@
11

22
# Fetch: Abort
33

4-
As we know, `fetch` returns a promise. And JavaScript generally has no concept of "aborting" a promise. So how can we abort a `fetch`?
4+
Comme nous le savons, `fetch` renvoie une promesse. Et JavaScript n'a généralement pas le concept "d'abandonner" une promesse. Alors, comment pouvons-nous abandonner un `fetch` ?
55

6-
There's a special built-in object for such purposes: `AbortController`, that can be used to abort not only `fetch`, but other asynchronous tasks as well.
6+
Il existe un objet intégré spécial dédié : `AbortController`, qui peut être utilisé pour abandonner non seulement un `fetch`, mais aussi d'autres tâches asynchrones.
77

8-
The usage is pretty simple:
8+
L'utilisation est assez simple :
99

10-
- Step 1: create a controller:
10+
- Étape 1 : créez un contrôleur :
1111

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

16-
A controller is an extremely simple object.
16+
Un contrôleur est un objet extrêmement simple.
1717

18-
- It has a single method `abort()`, and a single property `signal`.
19-
- When `abort()` is called:
20-
- `abort` event triggers on `controller.signal`
21-
- `controller.signal.aborted` property becomes `true`.
18+
- Il a une seule méthode `abort()`, et une seule propriété `signal`.
19+
- Lorsque `abort()` est appelé :
20+
- l'événement `abort` se déclenche sur `controller.signal`
21+
- la propriété `controller.signal.aborted` devient `true`.
2222
23-
All parties interested to learn about `abort()` call set listeners on `controller.signal` to track it.
23+
Toutes les parties intéressées à en savoir plus sur l'appel `abort()` configurent des écouteurs sur `controller.signal` pour le suivre.
2424

25-
Like this (without `fetch` yet):
25+
Comme ceci (sans `fetch` encore) :
2626

2727
```js run
2828
let controller = new AbortController();
2929
let signal = controller.signal;
3030
31-
// triggers when controller.abort() is called
31+
// se déclenche lorsque controller.abort() est appelé
3232
signal.addEventListener('abort', () => alert("abort!"));
3333
3434
controller.abort(); // abort!
3535
3636
alert(signal.aborted); // true
3737
```
3838

39-
- Step 2: pass the `signal` property to `fetch` option:
39+
- Étape 2 : passez la propriété `signal` à l'option` fetch` :
4040
4141
```js
4242
let controller = new AbortController();
@@ -45,20 +45,20 @@ The usage is pretty simple:
4545
});
4646
```
4747
48-
The `fetch` method knows how to work with `AbortController`, it listens to `abort` on `signal`.
48+
La méthode `fetch` sait comment travailler avec `AbortController`, elle écoute `abort` sur `signal`.
4949
50-
- Step 3: to abort, call `controller.abort()`:
50+
- Étape 3 : pour abandonner, appelez `controller.abort()` :
5151
5252
```js
5353
controller.abort();
5454
```
5555
56-
We're done: `fetch` gets the event from `signal` and aborts the request.
56+
Nous avons terminé : `fetch` récupère l'événement de `signal` et abandonne la requête.
5757

58-
When a fetch is aborted, its promise rejects with an error `AbortError`, so we should handle it, e.g. in `try..catch`:
58+
Lorsqu'un fetch est abandonné, sa promesse est rejetée avec une erreur `AbortError`, nous devons donc le gérer, par exemple dans un `try..catch` :
5959
6060
```js run async
61-
// abort in 1 second
61+
// abandonner en 1 seconde
6262
let controller = new AbortController();
6363
setTimeout(() => controller.abort(), 1000);
6464
@@ -67,20 +67,20 @@ try {
6767
signal: controller.signal
6868
});
6969
} catch(err) {
70-
if (err.name == 'AbortError') { // handle abort()
70+
if (err.name == 'AbortError') { // gère abort()
7171
alert("Aborted!");
7272
} else {
7373
throw err;
7474
}
7575
}
7676
```
7777
78-
**`AbortController` is scalable, it allows to cancel multiple fetches at once.**
78+
**`AbortController` est évolutif, il permet d'annuler plusieurs fetches à la fois.**
7979

80-
For instance, here we fetch many `urls` in parallel, and the controller aborts them all:
80+
Par exemple, ici, nous récupérons de nombreuses `urls` en parallèle, et le contrôleur les annule toutes :
8181

8282
```js
83-
let urls = [...]; // a list of urls to fetch in parallel
83+
let urls = [...]; // une liste d'urls à récupérer en parallèle
8484
8585
let controller = new AbortController();
8686
@@ -90,19 +90,19 @@ let fetchJobs = urls.map(url => fetch(url, {
9090
9191
let results = await Promise.all(fetchJobs);
9292
93-
// if controller.abort() is called from elsewhere,
94-
// it aborts all fetches
93+
// si controller.abort() est appelée d'ailleurs,
94+
// elle interrompt tous les fetches
9595
```
9696

97-
If we have our own asynchronous jobs, different from `fetch`, we can use a single `AbortController` to stop those, together with fetches.
97+
Si nous avons nos propres tâches asynchrones, différentes de `fetch`, nous pouvons utiliser un seul `AbortController` pour les arrêter, avec des fetches.
9898

99-
We just need to listen to its `abort` event:
99+
Nous avons juste besoin d'écouter son événement `abort` :
100100
101101
```js
102102
let urls = [...];
103103
let controller = new AbortController();
104104
105-
let ourJob = new Promise((resolve, reject) => { // our task
105+
let ourJob = new Promise((resolve, reject) => { // notre tâche
106106
...
107107
controller.signal.addEventListener('abort', reject);
108108
});
@@ -114,8 +114,8 @@ let fetchJobs = urls.map(url => fetch(url, { // fetches
114114
// Wait for fetches and our task in parallel
115115
let results = await Promise.all([...fetchJobs, ourJob]);
116116
117-
// if controller.abort() is called from elsewhere,
118-
// it aborts all fetches and ourJob
117+
// si controller.abort() est appelée d'ailleurs,
118+
// elle interrompt tous les fetches et ourJob
119119
```
120120

121-
So `AbortController` is not only for `fetch`, it's a universal object to abort asynchronous tasks, and `fetch` has built-in integration with it.
121+
Donc `AbortController` n'est pas seulement pour `fetch`, c'est un objet universel pour abandonner les tâches asynchrones, et `fetch` a une intégration native avec lui.

0 commit comments

Comments
 (0)