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 |
浏览器兼容性
加载中…