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.
AsyncGenerator
实例的 throw()
方法的作用就好像一个 throw
语句被插入到生成器主体的当前暂停位置,这会通知生成器错误的情况并允许其处理错误,或者执行清理和自行关闭。
语法
js
asyncGeneratorInstance.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("出了点问题")) // Error: 出了点问题
.then((res) => console.log(res)); // { value: 42, done: false }
规范
Specification |
---|
ECMAScript Language Specification # sec-asyncgenerator-prototype-throw |
浏览器兼容性
BCD tables only load in the browser