@beenotung/tslib
Version:
utils library in Typescript
60 lines (59 loc) • 1.53 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.sleep = void 0;
exports.waitFor = waitFor;
exports.wait = wait;
exports.later = later;
exports.runLater = runLater;
async function waitFor(predictor, producer, interval = 0) {
return new Promise(resolve => {
const check = () => {
if (predictor()) {
resolve(producer());
}
else {
setTimeout(check, interval);
}
};
check();
});
}
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();
});
}
async function later(ms) {
return new Promise(resolve => setTimeout(resolve, ms));
}
/** @alias `later(ms?)` */
exports.sleep = later;
async function runLater(f, ms) {
return new Promise((resolve, reject) => {
setTimeout(() => {
try {
resolve(f());
}
catch (e) {
reject(e);
}
}, ms);
});
}