语法
js
use(value)
参数
value
-
要注册到堆栈的值。必须包含一个
[Symbol.dispose]()
方法,或者为null
或undefined
。
返回值
传入的 value
相同。
异常
TypeError
-
如果
value
不是null
或undefined
,并且不包含[Symbol.dispose]()
方法,则抛出此错误。 ReferenceError
-
如果堆栈已被处置,则抛出异常。
描述
use()
的主要目的是将实现可处置协议的值注册到堆栈,这等同于 using
声明。如果该值未实现可处置协议(没有 [Symbol.dispose]()
方法),则应改用 adopt()
,并传递一个调用资源清理方法的函数。
您应该在声明资源后立即注册它。这意味着您应该始终将资源获取表达式包装在 use()
中,而不是将其提取到单独的语句中。
js
using disposer = new DisposableStack();
const reader = stream.getReader();
disposer.use(reader);
示例
使用 use()
此代码通过 ReadableStreamDefaultReader
消耗 ReadableStream
。当函数完成时,读取器会自动关闭,假设它实现了一个 [Symbol.dispose]()
方法,该方法同步释放对流的锁定。
js
{
using disposer = new DisposableStack();
const reader = disposer.use(stream.getReader());
const { value, done } = reader.read();
if (!done) {
// Process the value
}
// The reader.releaseLock() method is called here before exiting
}
规范
规范 |
---|
ECMAScript 异步显式资源管理 # sec-disposablestack.prototype.use |
浏览器兼容性
加载中…