Move middleware utils into server/utils
This commit is contained in:
21
server/utils/createMutex.js
Normal file
21
server/utils/createMutex.js
Normal file
@ -0,0 +1,21 @@
|
||||
function createMutex(doWork) {
|
||||
const mutex = Object.create(null);
|
||||
|
||||
return (key, payload, callback) => {
|
||||
if (mutex[key]) {
|
||||
mutex[key].push(callback);
|
||||
} else {
|
||||
mutex[key] = [callback];
|
||||
|
||||
doWork(payload, (error, value) => {
|
||||
mutex[key].forEach(callback => {
|
||||
callback(error, value);
|
||||
});
|
||||
|
||||
delete mutex[key];
|
||||
});
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
module.exports = createMutex;
|
Reference in New Issue
Block a user