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