Symbol.dispose
Symbol.dispose 静态数据属性表示 知名 Symbol Symbol.dispose。 using 声明会在变量离开作用域时查找变量初始化器上的此 Symbol,并调用对应的方法。
值
知名 Symbol Symbol.dispose。
Symbol.dispose 的属性特性 | |
|---|---|
| 可写 | 否 |
| 可枚举 | 否 |
| 可配置 | 否 |
描述
如果一个对象具有 [Symbol.dispose]() 方法,则该对象是可处置的。该方法应遵循以下语义:
- 调用此方法表示调用者不再打算继续使用该对象。此方法应执行任何必要的逻辑来显式清理资源,包括但不限于文件系统句柄、流、宿主对象等。
- 当从该方法中抛出异常时,通常意味着资源未能被显式释放。
- 如果对同一对象调用该函数一次以上,函数不应抛出异常。但是,此要求并未强制执行。
此方法不应返回 Promise,因为 [Symbol.dispose]() 返回的 Promise 不会被 await using 等待。要声明异步可处置对象,请使用 Symbol.asyncDispose。
示例
用户自定义的可处置对象
[Symbol.dispose] 允许创建自定义的可处置对象。有关更多信息,请参阅 using 参考。
js
class Disposable {
constructor() {
this.disposed = false;
}
[Symbol.dispose]() {
this.disposed = true;
}
get isDisposed() {
return this.disposed;
}
}
const resource = new Disposable();
{
using resourceUsed = resource;
console.log(resource.isDisposed); // false
}
console.log(resource.isDisposed); // true
规范
| 规范 |
|---|
| ECMAScript 异步显式资源管理 # 表格-1 |
浏览器兼容性
加载中…