Iterator.prototype[Symbol.dispose]()

Khả dụng hạn chế

This feature is not Baseline because it does not work in some of the most widely-used browsers.

Phương thức [Symbol.dispose]() của các thực thể Iterator triển khai giao thức disposable và cho phép nó bị xử lý khi sử dụng với using. Nó gọi phương thức return() của this, nếu nó tồn tại.

Cú pháp

js
iterator[Symbol.dispose]()

Tham số

Không có.

Giá trị trả về

Không có (undefined).

Ví dụ

Khai báo iterator với using

Phương thức Symbol.dispose được thiết kế để tự động được gọi trong khai báo using. Điều này hữu ích nếu bạn có một iterator mà bạn tự lặp bằng cách gọi phương thức next() của nó; nếu bạn lặp nó với for...of hoặc thứ gì đó tương tự, thì xử lý lỗi và dọn dẹp được thực hiện tự động.

js
function* generateNumbers() {
  try {
    yield 1;
    yield 2;
    yield 3;
  } finally {
    console.log("Cleaning up");
  }
}

function doSomething() {
  using numbers = generateNumbers();
  const res1 = numbers.next();
  // Không lặp phần còn lại của các số
  // Trước khi hàm thoát, async iterator được xử lý
  // In ra "Cleaning up"
}

doSomething();

Đặc điểm kỹ thuật

Thông số kỹ thuật
ECMAScript Async Explicit Resource Management
# sec-%iteratorprototype%-@@dispose

Tương thích trình duyệt

Xem thêm