@itwin/imodels-client-management
Version:
iModels API client wrapper for applications that manage iModels.
30 lines • 1.54 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.UtilityFunctions = void 0;
/*---------------------------------------------------------------------------------------------
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
* See LICENSE.md in the project root for license terms and full copyright notice.
*--------------------------------------------------------------------------------------------*/
const Constants_1 = require("../../Constants");
// eslint-disable-next-line @typescript-eslint/no-namespace
var UtilityFunctions;
(function (UtilityFunctions) {
async function sleep(ms) {
return new Promise((resolve) => setTimeout(resolve, ms));
}
UtilityFunctions.sleep = sleep;
async function waitForCondition(params) {
const sleepPeriodInMs = Constants_1.Constants.time.sleepPeriodInMs;
const timeOutInMs = params.timeOutInMs ?? Constants_1.Constants.time.iModelInitializationTimeOutInMs;
for (let retries = Math.ceil(timeOutInMs / sleepPeriodInMs); retries > 0; --retries) {
const isTargetStateReached = await params.conditionToSatisfy();
if (isTargetStateReached)
return;
await sleep(sleepPeriodInMs);
}
const timeoutError = params.timeoutErrorFactory();
throw timeoutError;
}
UtilityFunctions.waitForCondition = waitForCondition;
})(UtilityFunctions || (exports.UtilityFunctions = UtilityFunctions = {}));
//# sourceMappingURL=UtilityFunctions.js.map