[ Web Proxy ]
URL:
Viewing: https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Global_Objects/DisposableStack/defer [Back]  [Original]

DisposableStack.prototype.defer() - JavaScript | MDN

Dieser Inhalt wurde automatisch aus dem Englischen bersetzt, und kann Fehler enthalten. Erfahre mehr ber dieses Experiment.

View in English Always switch to English

DisposableStack.prototype.defer()

Eingeschrnkt verfgbar

Diese Funktion ist nicht Baseline, da sie in einigen der am weitesten verbreiteten Browser nicht funktioniert.

Want more browser support for this feature? Tell us why.

Die defer() Methode von DisposableStack Instanzen nimmt eine Rckruffunktion an, die aufgerufen wird, wenn der Stack entsorgt wird.

In diesem Artikel

Syntax

js
defer(onDispose)

Parameter

onDispose

Eine Funktion, die aufgerufen wird, wenn der Stack entsorgt wird. Die Funktion erhlt keine Argumente.

Rckgabewert

Keiner (undefined).

Ausnahmen

TypeError

Wird ausgelst, wenn onDispose keine Funktion ist.

ReferenceError

Wird ausgelst, wenn der Stack bereits entsorgt ist.

Beschreibung

Der Hauptzweck von defer() besteht darin, einen Bereinigungs-Callback zu registrieren, der nicht spezifisch fr die Entsorgung einer bestimmten Ressource ist. Wenn der Callback spezifisch fr eine Ressource ist, sollten Sie use() oder adopt() verwenden. Sie knnen defer auch verwenden, wenn die Ressource nicht in Ihrem Code beansprucht wird:

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

Beispiele

Verwendung von defer()

Diese Funktion setzt ein einfaches Sperre, um zu verhindern, dass mehrere asynchrone Operationen gleichzeitig ausgefhrt werden. Die Sperre wird freigegeben, wenn die Funktion abgeschlossen ist.

js
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;
}

Spezifikationen

Spezifikation
ECMAScript Async Explicit Resource Management
# sec-asyncdisposablestack.prototype.defer

Browser-Kompatibilitt

Siehe auch


Web Proxy Viewer  |  New URL  |  Original Page