typeorm
Version:
Data-Mapper ORM for TypeScript, ES7, ES6, ES5. Supports MySQL, PostgreSQL, MariaDB, SQLite, MS SQL Server, Oracle, MongoDB databases.
25 lines (23 loc) • 744 B
JavaScript
export class QueryLock {
constructor() {
this.queue = [];
}
async acquire() {
let release;
const waitingPromise = new Promise((ok) => (release = ok));
// Get track of everyone we need to wait on..
const otherWaitingPromises = [...this.queue];
// Put ourselves onto the end of the queue
this.queue.push(waitingPromise);
if (otherWaitingPromises.length > 0) {
await Promise.all(otherWaitingPromises);
}
return () => {
release();
if (this.queue.includes(waitingPromise)) {
this.queue.splice(this.queue.indexOf(waitingPromise), 1);
}
};
}
}
//# sourceMappingURL=QueryLock.js.map