typed-utilities
Version:
Strongly typed general purpose utilities
27 lines (24 loc) • 695 B
JavaScript
;
var _ = require("..");
describe(`AsyncSemaphore`, () => {
test(`use AsyncSemaphore`, async () => {
const semaphore = new _.AsyncSemaphore(10);
let max = 0;
let success = 0;
await (0, _.mapAsyncConcurrent)((0, _.range)(100), async k => {
await semaphore.use(async () => {
max = Math.max(max, semaphore.current);
await (0, _.sleep)(10);
if (k % 2 === 0) {
throw new Error();
} else {
success++;
}
});
}).catch(() => void 0);
expect(semaphore.current).toEqual(0);
expect(max).toEqual(10);
expect(success).toEqual(50);
});
});
//# sourceMappingURL=AsyncSemaphore.test.js.map