mirror of https://github.com/nodejs/node.git
26 lines
422 B
JavaScript
26 lines
422 B
JavaScript
module.exports = inflight
|
|
|
|
var reqs = Object.create(null)
|
|
var once = require('once')
|
|
|
|
function inflight (key, cb) {
|
|
if (reqs[key]) {
|
|
reqs[key].push(cb)
|
|
return null
|
|
} else {
|
|
reqs[key] = [cb]
|
|
return makeres(key)
|
|
}
|
|
}
|
|
|
|
function makeres(key) {
|
|
return once(res)
|
|
function res(error, data) {
|
|
var cbs = reqs[key]
|
|
delete reqs[key]
|
|
cbs.forEach(function(cb) {
|
|
cb(error, data)
|
|
})
|
|
}
|
|
}
|