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