/* Page prose (fr) */
"WrappingUp" = "# Récapitulatif\n\nL'intérêt d'`async`/`await` est un code qui attend sans bloquer: il se lit de haut en bas pendant que le thread reste libre pour un autre travail. La seule idée à retenir est qu'`await` marque un endroit où ta fonction peut *se mettre en pause et rendre son thread*, pas un endroit où elle se fige. Tout ce qui suit découle de bien saisir cette image.\n\n* Une fonction **`async`** peut se mettre en pause et reprendre; tu l'appelles avec **`await`**, un point de suspension *possible* qui libère le thread au lieu de le figer.\n* Une **tâche n'est pas un thread.** Swift multiplexe de nombreuses tâches sur un petit pool coopératif (~un thread par cœur); une tâche suspendue rend son thread et peut reprendre sur un thread différent. Bloquer un thread du pool (p. ex. `Thread.sleep`) est l'erreur classique: suspends, ne bloque pas.\n* Piège: n'attends pas du travail indépendant coup sur coup; deux `await` séquentiels empilent leurs attentes (le latte accidentel de 2 secondes). Utilise **`async let`** pour démarrer le travail indépendant en même temps, afin que les attentes se chevauchent et que le temps total diminue.\n* Piège: un `async let` que tu n'attends jamais est annulé à la fin de la portée et son résultat est jeté. `async let` est une *promesse d'attendre*: tiens-la.\n* Tu ne peux faire `await` que dans un contexte asynchrone; utilise **`Task { }`** pour traverser depuis du code synchrone (`await` au niveau supérieur ne compilera pas).\n* **`async throws` + `try await`** ramène les erreurs dans un simple `do-try-catch`, bien plus propre que la plomberie d'erreurs des completion handlers. Oublier `try` est une erreur de compilation, pas un bug silencieux.\n\n---\n\n## La suite\n\n[Tâches et annulation](Tasks%20and%20Cancellation.playgroundchapter/Overview): ce qu'est vraiment une `Task`, comment les tâches forment un arbre, et comment arrêter le travail dont tu n'as plus besoin.\n\n[Précédent](@previous)  |  page 8 sur 8";
