Prevent multiple concurrent requests for package info

This commit is contained in:
MICHAEL JACKSON
2017-08-10 20:43:20 -07:00
parent 7661950de3
commit cb8061f3e1
9 changed files with 135 additions and 96 deletions

21
server/createMutex.js Normal file
View File

@ -0,0 +1,21 @@
function createMutex(doWork) {
const mutex = {}
return function (key, callback) {
if (mutex[key]) {
mutex[key].push(callback)
} else {
mutex[key] = [ function () {
delete mutex[key]
}, callback ]
doWork(key, function (error, value) {
mutex[key].forEach(function (callback) {
callback(error, value)
})
})
}
}
}
module.exports = createMutex