unpkg/server/middleware/utils/createMutex.js

22 lines
419 B
JavaScript
Raw Normal View History

function createMutex(doWork) {
2018-05-14 15:06:49 +00:00
const mutex = Object.create(null);
2018-04-04 19:06:17 +00:00
return (key, payload, callback) => {
if (mutex[key]) {
2018-02-18 02:00:56 +00:00
mutex[key].push(callback);
} else {
2018-04-04 19:06:17 +00:00
mutex[key] = [callback];
2018-04-04 19:06:17 +00:00
doWork(payload, (error, value) => {
2017-11-08 18:14:46 +00:00
mutex[key].forEach(callback => {
2018-02-18 02:00:56 +00:00
callback(error, value);
});
2018-04-04 19:06:17 +00:00
delete mutex[key];
2018-02-18 02:00:56 +00:00
});
}
2018-02-18 02:00:56 +00:00
};
}
2018-02-18 02:00:56 +00:00
module.exports = createMutex;