このページはコミュニティーの尽力で英語から翻訳されました。MDN Web Docs コミュニティーについてもっと知り、仲間になるにはこちらから。

View in English Always switch to English

AsyncDisposableStack.prototype.defer()

Limited availability

This feature is not Baseline because it does not work in some of the most widely-used browsers.

AsyncDisposableStack インスタンスの defer() メソッドは、スタックが破棄されるときに呼び出され、その完了が待機されるコールバック関数を受け取ります。

defer() メソッドの一般的な情報については、 DisposableStack.prototype.defer() を参照してください。

構文

js
defer(onDispose)

引数

onDispose

スタックが破棄されるときに呼び出される関数です。この関数は引数を受け取らず、プロミスを返すこともでき、その場合は待機されます。

返値

なし (undefined)。

例外

TypeError

onDispose が関数でない場合にスローされます。

ReferenceError

スタックがすでに破棄されている場合にスローされます。

defer() の使用

defer() の用途の一つは、スコープを抜けるときにリソースの解放とは関係のない処理(例えばメッセージのログ出力)を行うことです。

js
async function doSomething() {
  await using disposer = new AsyncDisposableStack();
  disposer.defer(async () => {
    await fs.writeFile("log.txt", "All resources freed successfully");
  });
  // 他のコード (さらにデータを確保して解放する処理)
}

仕様書

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

ブラウザーの互換性

関連情報