DisposableStack.prototype.use()

Limited availability

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

Phương thức use() của các instance DisposableStack đăng ký một giá trị triển khai giao thức disposable vào ngăn xếp.

Cú pháp

js
use(value)

Tham số

value

Giá trị cần đăng ký vào ngăn xếp. Phải chứa phương thức [Symbol.dispose](), hoặc là null hoặc undefined.

Giá trị trả về

Cùng value đã được truyền vào.

Ngoại lệ

TypeError

Ném ra nếu value không phải là null hoặc undefined, và không chứa phương thức [Symbol.dispose]().

ReferenceError

Ném ra nếu ngăn xếp đã bị hủy.

Mô tả

Mục đích chính của use() là đăng ký một giá trị triển khai giao thức disposable vào ngăn xếp, tương đương với khai báo using. Nếu giá trị không triển khai giao thức disposable (tức là không có phương thức [Symbol.dispose]()), hãy dùng adopt() thay thế, truyền vào một callback gọi phương thức dọn dẹp của tài nguyên.

Bạn nên đăng ký tài nguyên ngay khi khai báo. Điều này có nghĩa là bạn nên luôn bọc biểu thức khởi tạo tài nguyên trong use(), thay vì tách nó ra thành một câu lệnh riêng.

js
using disposer = new DisposableStack();
const reader = stream.getReader();
disposer.use(reader);

Ví dụ

Sử dụng use()

Đoạn code này đọc dữ liệu từ một ReadableStream qua một ReadableStreamDefaultReader. Reader được tự động đóng khi hàm hoàn thành, giả sử nó triển khai phương thức [Symbol.dispose]() để đồng bộ giải phóng khóa trên luồng.

js
{
  using disposer = new DisposableStack();
  const reader = disposer.use(stream.getReader());
  const { value, done } = reader.read();
  if (!done) {
    // Process the value
  }
  // The reader.releaseLock() method is called here before exiting
}

Đặc tả

Specification
ECMAScript Async Explicit Resource Management
# sec-disposablestack.prototype.use

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

Xem thêm