AsyncDisposableStack.prototype.adopt()
Limited availability
This feature is not Baseline because it does not work in some of the most widely-used browsers.
AsyncDisposableStack インスタンスの adopt() メソッドは、独自の破棄関数を提供することで、非同期破棄プロトコルを実装していない値をスタックに登録します。
adopt() メソッドの一般的な情報については、DisposableStack.prototype.adopt() を参照してください。
構文
js
adopt(value, onDispose)
引数
返値
渡された value をそのまま返します。
例外
TypeError-
onDisposeが関数でない場合にスローされます。 ReferenceError-
スタックがすでに破棄されている場合にスローされます。
例
>adopt() の使用
この関数は、関数の実行が完了すると閉じられるファイルハンドル (Node.js の FileHandle) を作成します。ここでは、このファイルハンドルが非同期破棄プロトコルを実装していないものと仮定します (実際には実装されています)。そのため、adopt() を使用してスタックに登録します。handle.close() メソッドはプロミスを返すため、破棄処理が待機されるように AsyncDisposableStack を使用する必要があります。
js
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();
// 終了する前に、ここで handle.close() メソッドが呼び出され、待機される
return data;
}
仕様書
| Specification |
|---|
| ECMAScript Async Explicit Resource Management> # sec-asyncdisposablestack.prototype.adopt> |