AsyncDisposableStack.prototype.use()

可用性有限

此特性不是基線特性,因為它在一些最廣泛使用的瀏覽器中不起作用。

use() 方法是 AsyncDisposableStack 例項上的一種方法,用於將實現了 非同步可處置協議 的值註冊到堆疊。

有關 use() 方法的一般資訊,請參閱 DisposableStack.prototype.use()

語法

js
use(value)

引數

value

要註冊到堆疊的值。必須包含 [Symbol.asyncDispose]()[Symbol.dispose]() 方法,或者為 nullundefined

返回值

傳入的 value 相同。

異常

TypeError

如果 value 不是 nullundefined,並且不包含 [Symbol.asyncDispose]()[Symbol.dispose]() 方法,則會丟擲異常。

ReferenceError

如果堆疊已被處置,則丟擲異常。

示例

使用 use()

此函式讀取檔案(作為 Node.js 的 FileHandle)並返回其內容。在函式完成時,檔案控制代碼會自動關閉,前提是 FileHandle 類實現了非同步關閉檔案的 [Symbol.asyncDispose]() 方法。

js
async function readFileContents(path) {
  await using disposer = new AsyncDisposableStack();
  const handle = disposer.use(fs.open(path));
  const data = await handle.read();
  return data;
  // The disposer is disposed here, which causes handle to be closed too
}

規範

規範
ECMAScript 非同步顯式資源管理
# sec-asyncdisposablestack.prototype.use

瀏覽器相容性

另見