nano-wallet-js
Version:
SDK for developers to create and interact with Nanocurrency wallet easily
25 lines (21 loc) • 428 B
text/typescript
export default class Locker {
isLocked = false;
private queue: ((value: unknown) => void)[] = [];
async acquire() {
if (!this.isLocked) {
this.isLocked = true;
return;
}
return new Promise(resolve => {
this.queue.push(resolve);
});
}
release() {
if (this.queue.length > 0) {
const nextResolve = this.queue.shift();
nextResolve && nextResolve(true);
} else {
this.isLocked = false;
}
}
}