UNPKG

resolve-once-map-cb

Version:

Resolves a callback only once and memoizes the result in a map

18 lines (17 loc) 549 B
import resolveOnce from 'resolve-once-cb'; export default function resolveOnceMap(fn) { const resolvers = {}; return (key, callback)=>{ if (typeof callback !== 'function') throw new Error('resolve-once-map-cb missing callback'); if (!resolvers[key]) { resolvers[key] = resolveOnce((cb)=>{ try { return fn(key, cb); } catch (err) { return cb(err); } }); } return resolvers[key](callback); }; }