AsyncGenerator.prototype.throw()
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.
throw()
は AsyncGenerator
インスタンスのメソッドで、あたかも throw
文がジェネレーター本体の中の停止中の位置に挿入されたかのように動作し、エラー状態をジェネレーターに通知して、エラーを処理するか、クリーンアップを実行してそれ自身を閉じることができます。
構文
js
asyncGeneratorObject.throw(exception)
引数
返値
例
throw() の使用
次の例では、単純なジェネレーターと、throw
メソッドを使用して発生したエラーについて示します。エラーは、通常通り try...catch
ブロックで捕らえることができます。
js
// 非同期タスクです。実際にはもっと有益なことを使用していることを
// 想定してください。
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 }
仕様書
Specification |
---|
ECMAScript Language Specification # sec-asyncgenerator-prototype-throw |
ブラウザーの互換性
BCD tables only load in the browser