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).
39 lines (38 loc) • 1.52 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const interval_1 = require("../interval");
const of_1 = require("../of");
const take_1 = require("../take");
const throttle_1 = require("../throttle");
const toArray_1 = require("../toArray");
const wait_1 = require("../wait");
test("throttle", async () => {
const result = await toArray_1.toArray(throttle_1.throttle(() => wait_1.wait(100))(of_1.of(1, 2, 3, 4, 5, 6)));
expect(result).toEqual([1]);
});
test("throttle one value", async () => {
const startTime = Date.now();
const result = await toArray_1.toArray(throttle_1.throttle(() => wait_1.wait(100))(of_1.of(1)));
const endTime = Date.now();
expect(result).toEqual([1]);
expect(endTime - startTime).toBeLessThan(100);
});
// todo: fix these
// test("throttle interval", async () => {
// const result = await toArray(
// throttle(() => wait(100))(take(50)(interval(10)))
// );
// expect(result).toEqual([0, 10, 20, 30, 40]);
// });
test("throttle timer count", async () => {
let counter = 0;
const result = await toArray_1.toArray(throttle_1.throttle(() => {
counter++;
return wait_1.wait(100);
})(take_1.take(50)(interval_1.interval(10))));
expect(counter).toBeLessThan(10);
});
test("throttle increasing timeout", async () => {
const result = await toArray_1.toArray(throttle_1.throttle(val => wait_1.wait(200 * (val + 1)))(take_1.take(10)(interval_1.interval(100))));
expect(result).toEqual([0, 2, 8]);
});