@beenotung/tslib
Version:
utils library in Typescript
65 lines • 1.91 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.runLater = exports.later = exports.wait = exports.waitFor = void 0;
const tslib_1 = require("tslib");
function waitFor(predictor, producer, interval = 0) {
return tslib_1.__awaiter(this, void 0, void 0, function* () {
return new Promise(resolve => {
const check = () => {
if (predictor()) {
resolve(producer());
}
else {
setTimeout(check, interval);
}
};
check();
});
});
}
exports.waitFor = waitFor;
function wait(args) {
return new Promise(resolve => {
const check = 'for' in args
? () => {
const result = args.for();
if (result) {
resolve(result);
return;
}
setTimeout(check, args.interval);
}
: () => {
const ready = args.when();
if (ready) {
resolve(args.then());
return;
}
setTimeout(check, args.interval);
};
check();
});
}
exports.wait = wait;
function later(delay = 0) {
return tslib_1.__awaiter(this, void 0, void 0, function* () {
return new Promise(resolve => setTimeout(resolve, delay));
});
}
exports.later = later;
function runLater(f, delay = 0) {
return tslib_1.__awaiter(this, void 0, void 0, function* () {
return new Promise((resolve, reject) => {
setTimeout(() => {
try {
resolve(f());
}
catch (e) {
reject(e);
}
}, delay);
});
});
}
exports.runLater = runLater;
//# sourceMappingURL=wait.js.map