AsyncIterator.prototype[Symbol.asyncDispose]()

Limited availability

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

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

Cú pháp

js
asyncIterator[Symbol.asyncDispose]()

Tham số

Không có.

Giá trị trả về

Không có (undefined).

Ví dụ

Khai báo async iterator với await using

Phương thức Symbol.asyncDispose được thiết kế để tự động được gọi trong khai báo await using. Điều này hữu ích nếu bạn có một async 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 await...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
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();
  // 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

Specification
ECMAScript Async Explicit Resource Management
# sec-asyncdisposablestack.prototype-@@asyncDispose

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

Xem thêm