DisposableStack.prototype.dispose()
Baseline Limited availability
This feature is not Baseline because it does not work in some of the most widely-used browsers.
Метод dispose() экземпляров DisposableStack уничтожает этот стек, вызывая все зарегистрированные в нем деструкторы в обратном порядке регистрации. Если стек уже уничтожен, этот метод ничего не делает.
Он выполняет то же действие, что и using disposer = new DisposableStack() при выходе из области видимости. Его можно использовать, если вам нужно выполнить очистку в точке, отличной от выхода из области видимости.
Синтаксис
dispose()
Параметры
Нет.
Возвращаемое значение
Нет (undefined).
Исключения
-
SuppressedError - Выбрасывается, если несколько деструкторов в стеке вызвали ошибку. Если выбрасывается только одна ошибка, она выбрасывается повторно как есть. В противном случае для каждой дополнительной ошибки создается новый
SuppressedError, где оригинальная ошибка находится в свойствеsuppressed, а новая ошибка — в свойствеerror.
Примеры
Уничтожение стека
Здесь мы добавляем три деструктора в стек, используя методы use(), adopt() и defer(). Когда вызывается dispose(), деструкторы вызываются в обратном порядке регистрации.
Обратите внимание, что обычно вам не нужно вызывать dispose() вручную. Объявите стек с помощью using, и его метод [Symbol.dispose]() будет автоматически вызван при выходе стека из области видимости.
class Resource {
dispose() {
console.log("Resource disposed");
}
[Symbol.dispose]() {
console.log("Resource disposed via Symbol.dispose");
}
}
{
const disposer = new DisposableStack();
const resource = disposer.use(new Resource());
const resource2 = disposer.adopt(new Resource(), (resource) =>
resource.dispose(),
);
disposer.defer(() => console.log("Deferred disposer"));
disposer.dispose();
// Logs in order:
// Deferred disposer
// Resource disposed
// Resource disposed via Symbol.dispose
}
Спецификации
Совместимость с браузерами
| Desktop | Mobile | Server | |||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 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 |
134 |
134 |
141 |
119 |
preview |
134 |
141 |
88 |
No |
29.0 |
134 |
No |
1.3.0 |
2.2.10 |
24.0.0 |
См. также
- Управление ресурсами в JavaScript
DisposableStackDisposableStack.prototype.adopt()DisposableStack.prototype.defer()DisposableStack.prototype.use()DisposableStack.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/DisposableStack/dispose