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