1 | "use strict";
|
2 |
|
3 |
|
4 |
|
5 |
|
6 |
|
7 |
|
8 | Object.defineProperty(exports, "__esModule", { value: true });
|
9 | const cancellation_1 = require("./cancellation");
|
10 | const adapter_1 = require("./adapter");
|
11 |
|
12 |
|
13 |
|
14 |
|
15 |
|
16 |
|
17 |
|
18 | function delay(token_, msec_, value) {
|
19 | let token;
|
20 | let msec;
|
21 | if (typeof token_ === "number") {
|
22 | value = msec_;
|
23 | msec = token_;
|
24 | token = cancellation_1.CancellationToken.none;
|
25 | }
|
26 | else {
|
27 | msec = msec_;
|
28 | token = adapter_1.getToken(token_);
|
29 | }
|
30 | if (!token.canBeCanceled) {
|
31 | return new Promise(resolve => setTimeout(resolve, msec, value));
|
32 | }
|
33 | return new Promise((resolve, reject) => {
|
34 | token.throwIfCancellationRequested();
|
35 | const handle = setTimeout(() => {
|
36 | registration.unregister();
|
37 | resolve(value);
|
38 | }, msec);
|
39 | const registration = token.register(() => {
|
40 | clearTimeout(handle);
|
41 | try {
|
42 | token.throwIfCancellationRequested();
|
43 | }
|
44 | catch (e) {
|
45 | reject(e);
|
46 | }
|
47 | });
|
48 | });
|
49 | }
|
50 | exports.delay = delay;
|