AsyncGenerator : méthode throw()
Baseline
Widely available
Cette fonctionnalité est bien établie et fonctionne sur de nombreux appareils et versions de navigateurs. Elle est disponible sur tous les navigateurs depuis janvier 2020.
La méthode throw() des instances d'AsyncGenerator agit comme si une instruction throw était insérée dans le corps du générateur à la position actuelle où il est suspendu, ce qui signale au générateur une condition d'erreur et lui permet de gérer l'erreur, ou d'effectuer un nettoyage et de se fermer.
Syntaxe
asyncGeneratorInstance.throw(exception)
Paramètres
Valeur de retour
Si l'erreur lancée n'est pas capturée, la méthode retourne une promesse (Promise) qui est rejetée avec l'exception passée.
Si l'exception est capturée par un bloc try...catch et que le générateur reprend pour produire d'autres valeurs, la méthode retourne une promesse (Promise) qui est résolue avec un objet Object possédant deux propriétés :
Exemples
>Utilisation de throw()
L'exemple suivant montre un générateur et une erreur lancée avec la méthode throw. Une erreur peut être capturée par un bloc try...catch comme d'habitude.
// Une tâche asynchrone. Imaginez qu'elle fasse quelque chose
// de plus utile en pratique.
function attendre(temps) {
return new Promise((resolution, rejet) => {
setTimeout(resolution, temps);
});
}
async function* creerGenerateurAsync() {
while (true) {
try {
await attendre(500);
yield 42;
} catch (e) {
console.error(e);
}
}
}
const asyncGen = creerGenerateurAsync();
asyncGen.next(1).then((res) => console.log(res)); // { value: 42, done: false }
asyncGen
.throw(new Error("Une erreur s'est produite")) // Error: Une erreur s'est produite
.then((res) => console.log(res)); // { value: 42, done: false }
Spécifications
| Specification |
|---|
| ECMAScript® 2026 Language Specification> # sec-asyncgenerator-prototype-throw> |