Skip to main content
AsyncLocalStorage.snapshot - node__async_hooks.d.ts - Node documentation
method AsyncLocalStorage.snapshot
Unstable

Usage in Deno

```typescript import { AsyncLocalStorage } from "node:node__async_hooks.d.ts"; ```
AsyncLocalStorage.snapshot(): <
R,
TArgs extends any[],
>
(
fn: (...args: TArgs) => R,
...args: TArgs,
) => R
Captures the current execution context and returns a function that accepts a function as an argument. Whenever the returned function is called, it calls the function passed to it within the captured context. ```js const asyncLocalStorage = new AsyncLocalStorage(); const runInAsyncScope = asyncLocalStorage.run(123, () => AsyncLocalStorage.snapshot()); const result = asyncLocalStorage.run(321, () => runInAsyncScope(() => asyncLocalStorage.getStore())); console.log(result); // returns 123 ``` AsyncLocalStorage.snapshot() can replace the use of AsyncResource for simple async context tracking purposes, for example: ```js class Foo { #runInAsyncScope = AsyncLocalStorage.snapshot(); get() { return this.#runInAsyncScope(() => asyncLocalStorage.getStore()); } } const foo = asyncLocalStorage.run(123, () => new Foo()); console.log(asyncLocalStorage.run(321, () => foo.get())); // returns 123 ```

Return Type

<
R,
TArgs extends any[],
>
(
fn: (...args: TArgs) => R,
...args: TArgs,
) => R
A new function with the signature `(fn: (...args) : R, ...args) : R`.