Spec-Zone.ru › JavaScript

DisposableStack.prototype.use()

Базовый уровень Ограниченная доступность

Эта функция не является базовой, поскольку она не работает в некоторых наиболее широко используемых браузерах.

Метод use() экземпляров DisposableStack регистрирует значение, реализующее протокол удаления, в стеке.

Синтаксис

use(value)

Параметры

value
Значение для регистрации в стеке. Должно либо содержать метод [Symbol.dispose](), либо быть null, либо undefined.

Возвращаемое значение

То же самое value, которое было передано.

Исключения

TypeError
Генерируется, если value не является null или undefined, и не содержит метода [Symbol.dispose]().
ReferenceError
Генерируется, если стек уже был удален.

Описание

Основное назначение use() — зарегистрировать значение, реализующее протокол удаления, в стеке, что является эквивалентом объявления using. Если значение не реализует протокол удаления (оно не имеет метода [Symbol.dispose]()), используйте вместо него adopt(), передав колбэк, который вызывает метод очистки ресурса.

Вы должны зарегистрировать ваш ресурс сразу же после его объявления. Это означает, что вы всегда должны оборачивать выражение получения ресурса в use(), вместо того чтобы выделять его в отдельный оператор.

using disposer = new DisposableStack();
const reader = stream.getReader();
disposer.use(reader);

Примеры

Использование use()

Этот код потребляет ReadableStream через ReadableStreamDefaultReader. Ридер автоматически закрывается по завершении функции, при условии, что он реализует метод [Symbol.dispose](), который синхронно снимает блокировку с потока.

{
  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 Async Explicit Resource Management
# sec-disposablestack.prototype.use

Совместимость с браузерами

Десктопные Мобильные Серверные
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
use
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()

© 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/use

Spec-Zone.ru

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