UNPKG

1.91 kBJavaScriptView Raw
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3exports.runLater = exports.later = exports.wait = exports.waitFor = void 0;
4const tslib_1 = require("tslib");
5function waitFor(predictor, producer, interval = 0) {
6 return tslib_1.__awaiter(this, void 0, void 0, function* () {
7 return new Promise(resolve => {
8 const check = () => {
9 if (predictor()) {
10 resolve(producer());
11 }
12 else {
13 setTimeout(check, interval);
14 }
15 };
16 check();
17 });
18 });
19}
20exports.waitFor = waitFor;
21function wait(args) {
22 return new Promise(resolve => {
23 const check = 'for' in args
24 ? () => {
25 const result = args.for();
26 if (result) {
27 resolve(result);
28 return;
29 }
30 setTimeout(check, args.interval);
31 }
32 : () => {
33 const ready = args.when();
34 if (ready) {
35 resolve(args.then());
36 return;
37 }
38 setTimeout(check, args.interval);
39 };
40 check();
41 });
42}
43exports.wait = wait;
44function later(delay = 0) {
45 return tslib_1.__awaiter(this, void 0, void 0, function* () {
46 return new Promise(resolve => setTimeout(resolve, delay));
47 });
48}
49exports.later = later;
50function runLater(f, delay = 0) {
51 return tslib_1.__awaiter(this, void 0, void 0, function* () {
52 return new Promise((resolve, reject) => {
53 setTimeout(() => {
54 try {
55 resolve(f());
56 }
57 catch (e) {
58 reject(e);
59 }
60 }, delay);
61 });
62 });
63}
64exports.runLater = runLater;
65//# sourceMappingURL=wait.js.map
\No newline at end of file