<pre><code class="js"><span class="hl-0">import</span><span class="hl-1"> { </span><span class="hl-2">AsyncResource</span><span class="hl-1">, </span><span class="hl-2">executionAsyncId</span><span class="hl-1"> } </span><span class="hl-0">from</span><span class="hl-1"> </span><span class="hl-3">'node:async_hooks'</span><span class="hl-1">;</span><br/><br/><span class="hl-7">// AsyncResource() is meant to be extended. Instantiating a</span><br/><span class="hl-7">// new AsyncResource() also triggers init. If triggerAsyncId is omitted then</span><br/><span class="hl-7">// async_hook.executionAsyncId() is used.</span><br/><span class="hl-4">const</span><span class="hl-1"> </span><span class="hl-5">asyncResource</span><span class="hl-1"> = </span><span class="hl-4">new</span><span class="hl-1"> </span><span class="hl-8">AsyncResource</span><span class="hl-1">(</span><br/><span class="hl-1"> </span><span class="hl-2">type</span><span class="hl-1">, { </span><span class="hl-2">triggerAsyncId:</span><span class="hl-1"> </span><span class="hl-8">executionAsyncId</span><span class="hl-1">(), </span><span class="hl-2">requireManualDestroy:</span><span class="hl-1"> </span><span class="hl-4">false</span><span class="hl-1"> },</span><br/><span class="hl-1">);</span><br/><br/><span class="hl-7">// Run a function in the execution context of the resource. This will</span><br/><span class="hl-7">// * establish the context of the resource</span><br/><span class="hl-7">// * trigger the AsyncHooks before callbacks</span><br/><span class="hl-7">// * call the provided function `fn` with the supplied arguments</span><br/><span class="hl-7">// * trigger the AsyncHooks after callbacks</span><br/><span class="hl-7">// * restore the original execution context</span><br/><span class="hl-2">asyncResource</span><span class="hl-1">.</span><span class="hl-8">runInAsyncScope</span><span class="hl-1">(</span><span class="hl-2">fn</span><span class="hl-1">, </span><span class="hl-2">thisArg</span><span class="hl-1">, ...</span><span class="hl-2">args</span><span class="hl-1">);</span><br/><br/><span class="hl-7">// Call AsyncHooks destroy callbacks.</span><br/><span class="hl-2">asyncResource</span><span class="hl-1">.</span><span class="hl-8">emitDestroy</span><span class="hl-1">();</span><br/><br/><span class="hl-7">// Return the unique ID assigned to the AsyncResource instance.</span><br/><span class="hl-2">asyncResource</span><span class="hl-1">.</span><span class="hl-8">asyncId</span><span class="hl-1">();</span><br/><br/><span class="hl-7">// Return the trigger ID for the AsyncResource instance.</span><br/><span class="hl-2">asyncResource</span><span class="hl-1">.</span><span class="hl-8">triggerAsyncId</span><span class="hl-1">();</span>
0 commit comments