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.
Phương thức throw() của các thực thể AsyncGenerator hoạt động như thể câu lệnh throw được chèn vào thân generator tại vị trí bị tạm dừng hiện tại, thông báo cho generator về một điều kiện lỗi và cho phép nó xử lý lỗi hoặc thực hiện dọn dẹp và đóng lại.
Cú pháp
asyncGeneratorInstance.throw(exception)
Tham số
Giá trị trả về
Nếu lỗi được ném ra không bị bắt, nó sẽ trả về một Promise bị từ chối với ngoại lệ được truyền vào.
Nếu ngoại lệ bị bắt bởi try...catch và generator tiếp tục để yield thêm giá trị, nó sẽ trả về một Promise được giải quyết với một Object có hai thuộc tính:
Ví dụ
>Sử dụng throw()
Ví dụ sau cho thấy một generator và một lỗi được ném ra bằng phương thức throw. Lỗi có thể bị bắt bởi khối try...catch như thông thường.
// Một tác vụ bất đồng bộ. Giả sử nó đang làm gì đó hữu ích hơn
// trong thực tế.
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 }
Đặc điểm kỹ thuật
| Thông số kỹ thuật |
|---|
| ECMAScript® 2027 Language Specification> # sec-asyncgenerator-prototype-throw> |
Tương thích trình duyệt
Xem thêm
async function*- Hướng dẫn Iterators và generators