1.0.0 • Published 8 years ago
async-hooks-ignore v1.0.0
async-hooks-ignore
Filter to easily ignore async code in an async hook
npm install async-hooks-ignoreUsage
var hooksIgnore = require('async-hooks-ignore')
var hooks = require('async_hooks')
// create an ignore instance
var ignore = hooksIgnore()
// create an async_hook
var hook = hooks.createHook({
init (asyncId, type, triggerAsyncId) {
// add asyncId and triggerAsyncId to the ignore filter. If true ignore it.
if (ignore.init(asyncId, triggerAsyncId)) return
process._rawDebug(`init ${asyncId} ${type} ${triggerAsyncId}`)
},
before (asyncId) {
// check if we are ignoring it
if (ignore.has(asyncId)) return
process._rawDebug(`before ${asyncId}`)
},
after (asyncId) {
// check if we are ignoring it
if (ignore.has(asyncId)) return
process._rawDebug(`after ${asyncId}`)
},
destroy (asyncId) {
// remove the asyncId when we destroy it
if (ignore.destroy(asyncId)) return
process._rawDebug(`destroy ${asyncId}`)
}
})
hook.enable()
// run some async code that is ignored by the above hook
ignore.run(function () {
setInterval(function () {
console.log('I do not show up in the above hook')
}, 1000)
})
console.log('But I do ...')API
var ignore = hooksIgnore([fn])
Create a new ignore instance. If fn is passed the constructor will run ignore.run(fn).
var skip = ignore.init(asyncId, triggerAsyncId)
Init an asyncId. If it returns true, the hook should be skipped.
Note, that only ids that are skipped are tracked internally, and therefore the overhead is minimal.
Run this in the init async_hook method.
var skip = ignore.has(asyncId)
Check if an asyncId should be skipped.
var skip = ignore.destroy(asyncId)
Destroy an asyncId. If it returns true, the hook should be skipped.
Run this in the destroy async_hook method.
ignore.run(fn)
Run a function whose async operations are ignored in your hook.
Safe to call multiple times.
License
MIT
1.0.0
8 years ago