UNPKG

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