AsyncResource() is meant to be extended. Instantiating a new AsyncResource() also triggers init. If triggerAsyncId is omitted then async_hook.executionAsyncId() is used.
constructor
async_hooks.AsyncResource.constructor
Not implemented in Bun
The type of async event.
The ID of the execution context that created this async event (default: executionAsyncId()), or an AsyncResourceOptions object (since v9.3.0)
Referenced types
interface AsyncResourceOptions
- requireManualDestroy?: boolean
Disables automatic
emitDestroywhen the object is garbage collected. This usually does not need to be set (even ifemitDestroyis called manually), unless the resource'sasyncIdis retrieved and the sensitive API'semitDestroyis called with it.
class AsyncResource
The class AsyncResource is designed to be extended by the embedder's async resources. Using this, users can easily trigger the lifetime events of their own resources.
The init hook will trigger when an AsyncResource is instantiated.
The following is an overview of the AsyncResource API.
import { AsyncResource, executionAsyncId } from 'node:async_hooks';
// AsyncResource() is meant to be extended. Instantiating a
// new AsyncResource() also triggers init. If triggerAsyncId is omitted then
// async_hook.executionAsyncId() is used.
const asyncResource = new AsyncResource(
type, { triggerAsyncId: executionAsyncId(), requireManualDestroy: false },
);
// Run a function in the execution context of the resource. This will
// * establish the context of the resource
// * trigger the AsyncHooks before callbacks
// * call the provided function `fn` with the supplied arguments
// * trigger the AsyncHooks after callbacks
// * restore the original execution context
asyncResource.runInAsyncScope(fn, thisArg, ...args);
// Call AsyncHooks destroy callbacks.
asyncResource.emitDestroy();
// Return the unique ID assigned to the AsyncResource instance.
asyncResource.asyncId();
// Return the trigger ID for the AsyncResource instance.
asyncResource.triggerAsyncId();
- @returns
The unique
asyncIdassigned to the resource. - fn: Func): Func;
Binds the given function to execute to this
AsyncResource's scope.@param fnThe function to bind to the current
AsyncResource. Call all
destroyhooks. This should only ever be called once. An error will be thrown if it is called more than once. This must be manually called. If the resource is left to be collected by the GC then thedestroyhooks will never be called.@returnsA reference to
asyncResource.- fn: (this: This, ...args: any[]) => Result,thisArg?: This,...args: any[]): Result;
Call the provided function with the provided arguments in the execution context of the async resource. This will establish the context, trigger the AsyncHooks before callbacks, call the function, trigger the AsyncHooks after callbacks, and then restore the original execution context.
@param fnThe function to call in the execution context of this async resource.
@param thisArgThe receiver to be used for the function call.
@param argsOptional arguments to pass to the function.
- @returns
The same
triggerAsyncIdthat is passed to theAsyncResourceconstructor. - fn: Func,type?: string,thisArg?: ThisArg): Func;
Binds the given function to the current execution context.
@param fnThe function to bind to the current execution context.
@param typeAn optional name to associate with the underlying
AsyncResource.