AsyncGenerator.prototype.throw()
Базовый уровень Широко доступен
Эта функция хорошо зарекомендовала себя и работает на многих устройствах и в различных версиях браузеров. Она доступна в браузерах с января 2020 года.
Метод throw() экземпляров AsyncGenerator действует так, как если бы оператор throw был вставлен в тело генератора в текущей приостановленной позиции, что информирует генератор об ошибке и позволяет ему обработать ошибку, или выполнить очистку и закрыть себя.
Синтаксис
asyncGeneratorInstance.throw(exception)
Параметры
-
exception - Исключение, которое нужно выбросить. Для целей отладки полезно сделать его
instanceofError.
Возвращаемое значение
Если выброшенная ошибка не будет перехвачена, метод вернет Promise, который отклоняется с переданным исключением.
Если исключение перехвачено блоком try...catch и генератор возобновляется для выдачи новых значений, он вернет Promise, который разрешается с Object, содержащим два свойства:
-
done - Логическое значение:
-
true, если поток управления функции генератора достиг конца. -
false, если функция генератора способна производить больше значений.
-
-
value - Значение, выданное следующим выражением
yield.
Примеры
Использование throw()
Следующий пример демонстрирует генератор и ошибку, которая выбрасывается с использованием метода throw. Ошибку можно перехватить блоком try...catch как обычно.
// An async task. Pretend it's doing something more useful
// in practice.
function sleep(time) {
return new Promise((resolve, reject) => {
setTimeout(resolve, time);
});
}
async function* createAsyncGenerator() {
while (true) {
try {
await sleep(500);
yield 42;
} catch (e) {
console.error(e);
}
}
}
const asyncGen = createAsyncGenerator();
asyncGen.next(1).then((res) => console.log(res)); // { value: 42, done: false }
asyncGen
.throw(new Error("Something went wrong")) // Error: Something went wrong
.then((res) => console.log(res)); // { value: 42, done: false }
Спецификации
Совместимость с браузерами
| Настольные компьютеры | Мобильные устройства | Сервер | |||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox for Android | Opera Android | Safari on iOS | Samsung Internet | WebView Android | WebView on iOS | Bun | Deno | Node.js | |
throw |
63 |
79 |
55 |
50 |
12 |
63 |
55 |
46 |
12 |
8.0 |
63 |
12 |
1.0.0 |
1.0 |
10.0.0 |
См. также
© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/AsyncGenerator/throw