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

浏览器兼容性

另见