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 |
瀏覽器相容性
載入中…