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
}
Спецификации
Совместимость с браузерами
| Десктопные | Мобильные | Серверные | |||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 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
DisposableStackDisposableStack.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