Spec-Zone.ru › JavaScript

DisposableStack.prototype.defer()

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

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

Метод defer() экземпляров DisposableStack принимает функцию обратного вызова, которая будет вызвана при удалении стека.

Синтаксис

defer(onDispose)

Параметры

onDispose
Функция, которая будет вызвана при удалении стека. Функция не принимает аргументов.

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

Нет (undefined).

Исключения

TypeError
Выбрасывается, если onDispose не является функцией.
ReferenceError
Выбрасывается, если стек уже удален.

Описание

Основная цель defer() состоит в регистрации обратного вызова очистки, который не привязан к удалению конкретного ресурса. Если обратный вызов привязан к ресурсу, следует использовать use() или adopt(). Вы также можете использовать defer, когда ресурс не заявлен в вашем коде:

function consumeReader(reader) {
  using disposer = new DisposableStack();
  disposer.defer(() => reader.releaseLock());
  // Do something with reader
}

Примеры

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

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

let isLocked = false;

async function requestWithLock(url, options) {
  if (isLocked) {
    return undefined;
  }
  using disposer = new DisposableStack();
  isLocked = true;
  disposer.defer(() => (isLocked = false));
  const data = await fetch(url, options).then((res) => res.json());
  return data;
}

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

Спецификация
ECMAScript Async Explicit Resource Management
# sec-asyncdisposablestack.prototype.defer

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

Десктопные Мобильные Серверные
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
defer
134
134
141
119
предварительная версия
134
141
88
Нет
29.0
134
Нет
1.3.0
2.2.10
24.0.0

Смотрите также

  • Управление ресурсами JavaScript
  • DisposableStack
  • DisposableStack.prototype.adopt()
  • DisposableStack.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/DisposableStack/defer

Spec-Zone.ru

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