AsyncGenerator.prototype.throw()
**throw()
** 方法是 AsyncGenerator
实例的方法,它的作用相当于在生成器的主体中当前挂起的位置插入一个 throw
语句,这会将错误条件告知生成器,并允许它处理错误,或执行清理并关闭自身。
语法
js
asyncGeneratorInstance.throw(exception)
参数
返回值
示例
使用 throw()
以下示例展示了一个简单的生成器和使用 throw
方法抛出的错误。错误可以像往常一样被 try...catch
块捕获。
js
// 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 }
规范
规范 |
---|
ECMAScript 语言规范 # sec-asyncgenerator-prototype-throw |
浏览器兼容性
BCD 表仅在浏览器中加载