語法
js
use(value)
引數
value-
要註冊到堆疊的值。必須包含一個
[Symbol.dispose]()方法,或者為null或undefined。
返回值
傳入的 value 相同。
異常
TypeError-
如果
value不是null或undefined,並且不包含[Symbol.dispose]()方法,則丟擲此錯誤。 ReferenceError-
如果堆疊已被處置,則丟擲異常。
描述
use() 的主要目的是將實現可處置協議的值註冊到堆疊,這等同於 using 宣告。如果該值未實現可處置協議(沒有 [Symbol.dispose]() 方法),則應改用 adopt(),並傳遞一個呼叫資源清理方法的函式。
您應該在宣告資源後立即註冊它。這意味著您應該始終將資源獲取表示式包裝在 use() 中,而不是將其提取到單獨的語句中。
js
using disposer = new DisposableStack();
const reader = stream.getReader();
disposer.use(reader);
示例
使用 use()
此程式碼透過 ReadableStreamDefaultReader 消耗 ReadableStream。當函式完成時,讀取器會自動關閉,假設它實現了一個 [Symbol.dispose]() 方法,該方法同步釋放對流的鎖定。
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
}
規範
| 規範 |
|---|
| ECMAScript 非同步顯式資源管理 # sec-disposablestack.prototype.use |
瀏覽器相容性
載入中…