UNPKG

@beenotung/tslib

Version:
60 lines (59 loc) 1.53 kB
"use strict"; 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); }); }