Prevent multiple concurrent requests for package info
This commit is contained in:
21
server/createMutex.js
Normal file
21
server/createMutex.js
Normal 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
|
Reference in New Issue
Block a user