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

瀏覽器相容性

另見