import { AsyncErrorCallback, ConditionTester, SimpleFunction, BooleanCallback } from "../interfaces"; import { once } from "../common"; /** * This method executes a loop body until the condition function returns false. */ export function loopIf( condition: ConditionTester, loopBody: SimpleFunction, final?: AsyncErrorCallback ): void { let loop = function(): void { condition(once(function(result: boolean): void { if (result) { loopBody(once(function(err?: E): void { if (err !== null && err !== undefined) { final && final(err); } else { loop(); } })); } else { final && final(); } })); }; loop(); }