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