|
1 | 1 |
|
2 | 2 | # Chaînage des promesses
|
3 | 3 |
|
4 |
| -<<<<<<< HEAD |
5 |
| -Revenons au problème mentionné dans le chapitre <info:callbacks>: nous avons une séquence de tâches asynchrones à effectuer l'une après l'autre. Par exemple, charger des scripts. Comment pouvons-nous bien le coder? |
6 |
| -======= |
7 |
| -Let's return to the problem mentioned in the chapter <info:callbacks>: we have a sequence of asynchronous tasks to be performed one after another — for instance, loading scripts. How can we code it well? |
8 |
| ->>>>>>> 14e4e9f96bcc2bddc507f409eb4716ced897f91a |
| 4 | +Revenons au problème mentionné dans le chapitre <info:callbacks>: nous avons une séquence de tâches asynchrones à effectuer l'une après l'autre. Par exemple, charger des scripts. Comment pouvons-nous bien le coder ? |
9 | 5 |
|
10 | 6 | Les promesses fournissent quelques options pour le faire.
|
11 | 7 |
|
@@ -168,11 +164,7 @@ loadScript("/article/promise-chaining/one.js")
|
168 | 164 |
|
169 | 165 | Ici, chaque appel à `loadScript` renvoie une promesse et le prochain `.then` s'exécute lorsqu'il est résolu. Ensuite, il lance le chargement du script suivant. Les scripts sont donc chargés les uns après les autres.
|
170 | 166 |
|
171 |
| -<<<<<<< HEAD |
172 | 167 | Nous pouvons ajouter plus d'actions asynchrones à la chaîne. Noter que le code est toujours "plat", il grandit verticallement, pas vers la droite. Il n'y a aucun signe de "pyramid of doom".
|
173 |
| -======= |
174 |
| -We can add more asynchronous actions to the chain. Please note that the code is still "flat" — it grows down, not to the right. There are no signs of the "pyramid of doom". |
175 |
| ->>>>>>> 14e4e9f96bcc2bddc507f409eb4716ced897f91a |
176 | 168 |
|
177 | 169 | Techniquement, nous pourrions ajouter `.then` directement à chaque `loadScript`, comme ceci:
|
178 | 170 |
|
@@ -295,11 +287,7 @@ fetch('/article/promise-chaining/user.json')
|
295 | 287 | });
|
296 | 288 | ```
|
297 | 289 |
|
298 |
| -<<<<<<< HEAD |
299 |
| -Le code fonctionne, voir les commentaires sur les détails. Pourtant, il y a un problème potentiel, une erreur typique de ceux qui commencent à utiliser les promesses. |
300 |
| -======= |
301 |
| -The code works; see comments about the details. However, there's a potential problem in it, a typical error for those who begin to use promises. |
302 |
| ->>>>>>> 14e4e9f96bcc2bddc507f409eb4716ced897f91a |
| 290 | +Le code fonctionne ; voir les commentaires à propos des détails. Pourtant, il y a un problème potentiel, une erreur typique de ceux qui commencent à utiliser les promesses. |
303 | 291 |
|
304 | 292 | Regardez la ligne `(*)`: comment pouvons-nous faire quelque chose *après* l'avatar a fini d'afficher et d'être supprimé? Par exemple, nous aimerions montrer un formulaire pour éditer cet utilisateur ou autre chose. Pour l'instant, il n'y a pas moyen.
|
305 | 293 |
|
@@ -331,19 +319,9 @@ fetch('/article/promise-chaining/user.json')
|
331 | 319 | .then(githubUser => alert(`Finished showing ${githubUser.name}`));
|
332 | 320 | ```
|
333 | 321 |
|
334 |
| -<<<<<<< HEAD |
335 |
| -En d’autres termes, le gestionnaire `.then` à la ligne `(*)` renvoie `new Promise`, qui ne sera réglé qu’après l’appel de `resolve(githubUser)` dans `setTimeout` `(**)`. |
| 322 | +En d’autres termes, le gestionnaire `.then` à la ligne `(*)` renvoie `new Promise`, qui ne sera réglé qu’après l’appel de `resolve(githubUser)` dans `setTimeout` `(**)`. Le prochain `.then` dans la chaîne attendra cela. |
336 | 323 |
|
337 |
| -Le prochain `.then` dans la chaîne attendra cela. |
338 |
| - |
339 |
| -Comme bonne pratique, une action asynchrone doit toujours renvoyer une promesse. |
340 |
| - |
341 |
| -Cela permet de planifier des actions après. Même si nous n'avons pas l'intention d'étendre la chaîne maintenant, nous en aurons peut-être besoin plus tard. |
342 |
| -======= |
343 |
| -That is, the `.then` handler in line `(*)` now returns `new Promise`, that becomes settled only after the call of `resolve(githubUser)` in `setTimeout` `(**)`. The next `.then` in the chain will wait for that. |
344 |
| - |
345 |
| -As a good practice, an asynchronous action should always return a promise. That makes it possible to plan actions after it; even if we don't plan to extend the chain now, we may need it later. |
346 |
| ->>>>>>> 14e4e9f96bcc2bddc507f409eb4716ced897f91a |
| 324 | +Comme bonne pratique, une action asynchrone doit toujours renvoyer une promesse. Cela permet de planifier des actions après. Même si nous n'avons pas l'intention d'étendre la chaîne maintenant, nous en aurons peut-être besoin plus tard. |
347 | 325 |
|
348 | 326 | Enfin, nous pouvons scinder le code en fonctions réutilisables:
|
349 | 327 |
|
|
0 commit comments