axax
Version:
A library of async iterator extensions for JavaScript including ```map```, ```reduce```, ```filter```, ```flatMap```, ```pipe``` and [more](https://github.com/jamiemccrindle/axax/blob/master/docs/API.md#functions).
34 lines (33 loc) • 1.09 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const concurrentMap_1 = require("../concurrentMap");
const of_1 = require("../of");
const range_1 = require("../range");
const toArray_1 = require("../toArray");
const wait_1 = require("../wait");
test("concurrentMap", async () => {
const result = await toArray_1.toArray(concurrentMap_1.concurrentMap(async (value) => value * 2, 2)(of_1.of(1, 2, 3)));
result.sort();
expect(result).toEqual([2, 4, 6]);
});
test("concurrentMap async", async () => {
let maxInParallel = 0;
let currentInParallel = 0;
const increment = () => {
currentInParallel += 1;
if (currentInParallel > maxInParallel) {
maxInParallel = currentInParallel;
}
};
const decrement = () => {
currentInParallel -= 1;
};
for await (const item of concurrentMap_1.concurrentMap(async () => {
increment();
await wait_1.wait(100);
decrement();
}, 4)(range_1.range(1, 10))) {
// noop
}
expect(maxInParallel).toEqual(4);
});