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

瀏覽器相容性

另見