AsyncDisposableStack.prototype.adopt()
adopt() 方法是 AsyncDisposableStack 例項的方法,它透過提供自定義的處置函式,將未實現非同步處置協議的值註冊到堆疊中。
有關 adopt() 方法的常規資訊,請參閱 DisposableStack.prototype.adopt()。
語法
js
adopt(value, onDispose)
引數
返回值
傳入的 value 相同。
異常
TypeError-
如果
onDispose不是函式,則丟擲異常。 ReferenceError-
如果堆疊已被處置,則丟擲異常。
示例
使用 adopt()
此函式建立一個檔案控制代碼(作為 Node.js 的 FileHandle),該控制代碼在函式完成時關閉。我們假設檔案控制代碼未實現非同步處置協議(實際上它實現了),因此我們使用 adopt() 將其註冊到堆疊。由於 handle.close() 方法返回一個 promise,我們需要使用 AsyncDisposableStack 以便等待處置完成。
js
async function readFile(path) {
await using disposer = new AsyncDisposableStack();
const handle = disposer.adopt(
fs.open(path),
async (handle) => await handle.close(),
);
const data = await handle.read();
// The handle.close() method is called and awaited here before exiting
return data;
}
規範
| 規範 |
|---|
| ECMAScript 非同步顯式資源管理 # sec-asyncdisposablestack.prototype.adopt |
瀏覽器相容性
載入中…