AsyncGenerator.prototype.throw()
throw() 方法用於 AsyncGenerator 例項,它的作用相當於在生成器當前暫停的位置插入一條 throw 語句,從而通知生成器發生錯誤,並允許生成器處理該錯誤、執行清理操作並關閉自身。
語法
js
asyncGeneratorInstance.throw(exception)
引數
返回值
如果丟擲的錯誤未被捕獲,它將返回一個 Promise,該 Promise 將以傳入的異常被拒絕。
如果異常被 try...catch 塊捕獲,並且生成器恢復以產生更多值,它將返回一個 Promise,該 Promise 將以一個具有兩個屬性的 Object 解析:
示例
使用 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® 2026 語言規範 # sec-asyncgenerator-prototype-throw |
瀏覽器相容性
載入中…