AsyncDisposableStack.prototype.adopt()
Базовая Ограниченная доступность
Эта функция не является базовой, поскольку она не работает в некоторых наиболее широко используемых браузерах.
Метод adopt() экземпляров AsyncDisposableStack регистрирует значение, которое не реализует протокол асинхронного удаления, в стек, предоставляя пользовательскую функцию удаления.
См. DisposableStack.prototype.adopt() для получения общей информации о методе adopt().
Синтаксис
adopt(value, onDispose)
Параметры
-
value - Любое значение, которое нужно зарегистрировать в стеке.
-
onDispose - Функция, которая будет вызвана при удалении стека. Функция принимает
valueв качестве единственного аргумента и может вернуть промис, который будет ожидаться.
Возвращаемое значение
Тот же value, который был передан.
Исключения
-
TypeError - Выбрасывается, если
onDisposeне является функцией. -
ReferenceError - Выбрасывается, если стек уже удален.
Примеры
Использование adopt()
Эта функция создает дескриптор файла (как Node.js FileHandle), который закрывается по завершении функции. Мы предполагаем, что дескриптор файла не реализует протокол асинхронного удаления (в действительности он реализует), поэтому мы используем adopt() для регистрации его в стеке. Поскольку метод handle.close() возвращает промис, нам нужно использовать AsyncDisposableStack, чтобы дождаться завершения удаления.
async function readFile(path) {
await using disposer = new AsyncDisposableStack();
const handle = disposer.adopt(
await fs.open(path),
async (handle) => await handle.close(),
);
const data = await handle.read();
// The handle.close() method is called and awaited here before exiting
return data;
}
Спецификации
| Спецификация |
|---|
| ECMAScript Async Explicit Resource Management # sec-asyncdisposablestack.prototype.adopt |
Совместимость с браузерами
| Десктопные | Мобильные | Серверные | |||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 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 | |
adopt |
134 |
134 |
141 |
119 |
preview |
134 |
141 |
88 |
Нет |
29.0 |
134 |
Нет |
1.3.0 |
2.2.10 |
24.0.0 |
См. также
- Управление ресурсами JavaScript
AsyncDisposableStackAsyncDisposableStack.prototype.defer()AsyncDisposableStack.prototype.use()
© 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/AsyncDisposableStack/adopt