Symbol.dispose
Базовая поддержка Ограниченная доступность
Эта функция не является базовой, так как она не работает в некоторых из наиболее широко используемых браузеров.
Статическое свойство данных Symbol.dispose представляет собой общеизвестный символ Symbol.dispose. Объявление using ищет этот символ в инициализаторе переменной для метода, который будет вызван, когда переменная выйдет из области видимости.
Значение
Общеизвестный символ Symbol.dispose.
Атрибуты свойства Symbol.dispose
| |
|---|---|
| Записываемое | нет |
| Перечисляемое | нет |
| Настраиваемое | нет |
Описание
Объект является освобождаемым (disposable), если у него есть метод [Symbol.dispose](). Ожидается, что метод будет иметь следующую семантику:
- Вызов этого метода уведомляет объект Disposable о том, что вызывающая сторона не намерена продолжать использовать этот объект. Этот метод должен выполнять всю необходимую логику для явного освобождения ресурса, включая, но не ограничиваясь, файловые дескрипторы, потоки, объектные ссылки среды выполнения и т. д.
- Когда из этого метода выбрасывается исключение, это обычно означает, что ресурс не удалось явно освободить.
- При вызове более одного раза для одного и того же объекта функция не должна вызывать исключение. Однако это требование не применяется.
Этот метод не должен возвращать промис, так как промисы, возвращаемые [Symbol.dispose](), не ожидаются await using. Для объявления асинхронных освобождаемых объектов используйте Symbol.asyncDispose.
Примеры
Пользовательские освобождаемые объекты
[Symbol.dispose] позволяет создавать пользовательские освобождаемые объекты. См. using для получения дополнительной информации.
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
Спецификации
Совместимость с браузерами
| Настольные компьютеры | Мобильные устройства | Сервер | |||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox for Android | Opera Android | Safari on iOS | Samsung Internet | WebView Android | WebView on iOS | Bun | Deno | Node.js | |
dispose |
125 |
125 |
141 |
111 |
preview |
125 |
141 |
83 |
Нет |
27.0 |
125 |
Нет |
1.0.23 |
1.37 |
24.0.0
20.4.0–21.0.0Доступно только для ресурсовfs и stream.18.18.0–19.0.0Доступно только для ресурсовfs и stream. |
См. также
- Polyfill
Symbol.disposeвcore-js - Управление ресурсами в JavaScript
Symbol.asyncDisposeusingDisposableStack.prototype[Symbol.dispose]()Iterator.prototype[Symbol.dispose]()
© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/dispose