Spec-Zone.ru › JavaScript

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
  • AsyncDisposableStack
  • AsyncDisposableStack.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

Spec-Zone.ru

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