静态方法:AsyncLocalStorage.snapshot()


\Static method: AsyncLocalStorage.snapshot()

版本历史
版本变更
v23.11.0, v22.15.0

标记 API 稳定。

v19.8.0, v18.16.0

新增于: v19.8.0, v18.16.0

  • 返回:<Function> 带有签名 (fn: (...args) : R, ...args) : R 的新函数。

    \Returns: <Function> A new function with the signature (fn: (...args) : R, ...args) : 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.

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() 可以代替 AsyncResource 用于简单的异步上下文跟踪目的,例如:

\AsyncLocalStorage.snapshot() can replace the use of AsyncResource for simple async context tracking purposes, for example:

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 

AltStyle によって変換されたページ (->オリジナル) /