Spec-Zone.ru › JavaScript

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
}

Спецификации

Спецификация
ECMAScript Async Explicit Resource Management
# sec-disposablestack.prototype.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
  • DisposableStack
  • DisposableStack.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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API