概述


以下是公共 API 的简单概述。

const async_hooks = require('async_hooks');

// 返回当前执行上下文的 ID。
const eid = async_hooks.executionAsyncId();

// 返回负责触发当前
// 执行范围回调的句柄ID。
const tid = async_hooks.triggerAsyncId();

// 创建新的 AsyncHook 实例。所有这些回调都是可选的。
const asyncHook =
    async_hooks.createHook({ init, before, after, destroy, promiseResolve });

// 允许调用此 AsyncHook 实例的回调。
// 这不是运行构造函数后的隐式操作,
// 必须显式运行才能开始执行回调。
asyncHook.enable();

// 禁用监听新的异步事件。
asyncHook.disable();

//
// 以下是可以传给 createHook() 的回调。
//

// init 在对象构造过程中被调用。
// 当此回调运行时,资源可能尚未完成构造,
// 因此 "asyncId" 引用的资源的所有字段可能尚未填充。
function init(asyncId, type, triggerAsyncId, resource) { }

// 
function before(asyncId) { }

// After 在资源的回调完成后被调用。
function after(asyncId) { }

// 资源销毁时调用销毁。
function destroy(asyncId) { }

// promiseResolve 仅在调用传给 `Promise` 构造函数的 `resolve` 函数时
// (直接或通过其他解决 promise)
// 时调用 promise 资源。
function promiseResolve(asyncId) { }