AsyncIterator.prototype[Symbol.asyncDispose]()
[Symbol.asyncDispose]() 方法是 AsyncIterator 实例的一部分,它实现了异步可处置协议,并允许在使用 await using 时被处置。如果 this 存在 return() 方法,它会调用并等待该方法。
语法
js
asyncIterator[Symbol.asyncDispose]()
参数
无。
返回值
无(undefined)。
示例
使用 await using 声明一个异步迭代器
Symbol.asyncDispose 方法旨在在 await using 声明中自动调用。如果您有一个手动调用其 next() 方法来迭代的异步迭代器,那么这一点非常有用;如果您使用 for await...of 或类似方式进行迭代,那么错误处理和清理将自动完成。
js
async function* generateNumbers() {
try {
yield 1;
yield 2;
yield 3;
} finally {
console.log("Cleaning up");
}
}
async function doSomething() {
await using numbers = generateNumbers();
const res1 = await numbers.next();
// Not iterating the rest of the numbers
// Before the function exits, the async iterator is disposed
// Logs "Cleaning up"
}
doSomething();
规范
| 规范 |
|---|
| ECMAScript 异步显式资源管理 # sec-asyncdisposablestack.prototype-@@asyncDispose |
浏览器兼容性
加载中…