@jsenv/util
Version:
Set of functions often needed when using Node.js.
22 lines (18 loc) • 626 B
JavaScript
export const trackRessources = () => {
const callbackArray = []
const registerCleanupCallback = (callback) => {
if (typeof callback !== "function")
throw new TypeError(`callback must be a function
callback: ${callback}`)
callbackArray.push(callback)
return () => {
const index = callbackArray.indexOf(callback)
if (index > -1) callbackArray.splice(index, 1)
}
}
const cleanup = async (reason) => {
const localCallbackArray = callbackArray.slice()
await Promise.all(localCallbackArray.map((callback) => callback(reason)))
}
return { registerCleanupCallback, cleanup }
}