git ssb

0+

wanderer🌟 / lockmap



Tree: 01587eaf141302ad9c7d7c412205e3c0188dcd49

Files: 01587eaf141302ad9c7d7c412205e3c0188dcd49 / index.js

713 bytesRaw
1module.exports = class LockMap {
2 constructor () {
3 this._map = new Map()
4 }
5
6 /**
7 * Creates a lock on a given ID and returns a resolve function to unlock the
8 * lock
9 * @param {*} id
10 * @return {function} the resolve function to call once it to unlock
11 */
12 lock (id) {
13 let r
14 const promise = new Promise((resolve, reject) => {
15 r = resolve
16 })
17 promise.then(() => {
18 this._map.delete(id)
19 })
20 this._map.set(id, promise)
21 return r
22 }
23
24 /**
25 * gets the current lock if any for a given id. If there is a lock this will
26 * return a promise that resolves once the lock is unlocked
27 * return {Promise}
28 */
29 getLock (id) {
30 return this._map.get(id)
31 }
32}
33

Built with git-ssb-web