AsyncDisposableStack.prototype.use()
Limited availability
This feature is not Baseline because it does not work in some of the most widely-used browsers.
AsyncDisposableStack インスタンスの use() メソッドは、非同期破棄プロトコル を実装する値をスタックに登録します。
use() メソッドに関する一般的な情報については DisposableStack.prototype.use() を参照してください。
構文
js
use(value)
引数
value-
スタックに登録する値です。
[Symbol.asyncDispose]()または[Symbol.dispose]()メソッドを持つか、nullまたはundefinedである必要があります。
返値
渡されたものと同じ value。
例外
TypeError-
valueがnullまたはundefinedではなく、かつ[Symbol.asyncDispose]()または[Symbol.dispose]()メソッドを持たない場合にスローされます。 ReferenceError-
スタックがすでに破棄されている場合にスローされます。
例
>use() の使用
この関数は、ファイル (Node.js の FileHandle) を読み込み、その内容を返します。FileHandle クラスはファイルを非同期で閉じる [Symbol.asyncDispose]() メソッドを実装しているため、関数の処理が完了するとファイルハンドルは自動的に閉じられます。
js
async function readFileContents(path) {
await using disposer = new AsyncDisposableStack();
const handle = disposer.use(await fs.open(path));
const data = await handle.read();
return data;
// ここで disposer が破棄され、それに伴って handle も閉じられます
}
仕様書
| Specification |
|---|
| ECMAScript Async Explicit Resource Management> # sec-asyncdisposablestack.prototype.use> |