AsyncDisposableStack.prototype.defer()

可用性有限

此特性不是基线特性,因为它在一些最广泛使用的浏览器中不起作用。

AsyncDisposableStack 实例的 defer() 方法接受一个回调函数,该函数将在堆栈被释放时被调用并等待。

有关 defer() 方法的一般信息,请参阅 DisposableStack.prototype.defer()

语法

js
defer(onDispose)

参数

onDispose

一个将在堆栈被释放时调用的函数。该函数不接收任何参数,并且可以返回一个会被等待的 Promise。

返回值

无(undefined)。

异常

TypeError

如果 onDispose 不是函数,则抛出异常。

ReferenceError

如果堆栈已被处置,则抛出异常。

示例

使用 defer()

defer() 的一个用例是在作用域退出时执行与资源释放无关的操作,例如记录一条消息。

js
async function doSomething() {
  await using disposer = new AsyncDisposableStack();
  disposer.defer(async () => {
    await fs.writeFile("log.txt", "All resources freed successfully");
  });
  // Other code that claims and frees more data
}

规范

规范
ECMAScript 异步显式资源管理
# sec-asyncdisposablestack.prototype.defer

浏览器兼容性

另见