async_hooks.createHook(callbacks)
callbacks<Object> 用于注册 钩子回调init<Function> 这个init回调。before<Function> 这个before回调。after<Function> 这个after回调。destroy<Function> 摧毁destroy回调。promiseResolve<Function> 这个promiseResolve回调。
- 返回:用于禁用和启用钩子的 <AsyncHook> 实例
注册函数,以在每个异步操作的不同生命周期事件中调用。
【Registers functions to be called for different lifetime events of each async operation.】
在资源的生命周期内,针对相应的异步事件会调用回调函数 init()/before()/after()/destroy()。
【The callbacks init()/before()/after()/destroy() are called for the
respective asynchronous event during a resource's lifetime.】
所有回调都是可选的。例如,如果只需要跟踪资源清理,那么只需要传入 destroy 回调即可。可以传递给 callbacks 的所有函数的具体信息在 钩子回调 部分。
【All callbacks are optional. For example, if only resource cleanup needs to
be tracked, then only the destroy callback needs to be passed. The
specifics of all functions that can be passed to callbacks is in the
Hook Callbacks section.】
import { createHook } from 'node:async_hooks';
const asyncHook = createHook({
init(asyncId, type, triggerAsyncId, resource) { },
destroy(asyncId) { },
});const async_hooks = require('node:async_hooks');
const asyncHook = async_hooks.createHook({
init(asyncId, type, triggerAsyncId, resource) { },
destroy(asyncId) { },
});回调将通过原型链继承:
【The callbacks will be inherited via the prototype chain:】
class MyAsyncCallbacks {
init(asyncId, type, triggerAsyncId, resource) { }
destroy(asyncId) {}
}
class MyAddedCallbacks extends MyAsyncCallbacks {
before(asyncId) { }
after(asyncId) { }
}
const asyncHook = async_hooks.createHook(new MyAddedCallbacks()); 因为 Promise 是异步资源,其生命周期是通过 async hooks 机制跟踪的,所以 init()、before()、after() 和 destroy() 回调 不能 是返回 Promise 的异步函数。
【Because promises are asynchronous resources whose lifecycle is tracked
via the async hooks mechanism, the init(), before(), after(), and
destroy() callbacks must not be async functions that return promises.】