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
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ànullhoặcundefined.
Giá trị trả về
Cùng value đã được truyền vào.
Ngoại lệ
TypeError-
Ném ra nếu
valuekhông phải lànullhoặcundefined, 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.
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.
{
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> |