import { AsyncErrorCallback, RepeatWorker } from "../interfaces"; import { once } from "../common"; /** * This method will executes a loop body for N times, or until it meets a * failure. */ export function repeat( times: number, loopBody: RepeatWorker, final?: AsyncErrorCallback ): void { let loop = function(i: number): void { if (i >= times) { final && final(); return; } loopBody(once(function(err?: E): void { if (err !== null && err !== undefined) { final && final(err); } else { loop(i + 1); } }), i); }; loop(0); }