UNPKG

1.69 kBJavaScriptView Raw
1"use strict";
2/*! *****************************************************************************
3Copyright (c) Microsoft Corporation.
4Licensed under the Apache License, Version 2.0.
5
6See LICENSE file in the project root for details.
7***************************************************************************** */
8Object.defineProperty(exports, "__esModule", { value: true });
9const cancellation_1 = require("./cancellation");
10const adapter_1 = require("./adapter");
11/**
12 * Waits the specified number of milliseconds before resolving with the provided value.
13 *
14 * @param token A CancellationToken
15 * @param msec The number of milliseconds to wait before resolving.
16 * @param value An optional value for the resulting Promise.
17 */
18function 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}
50exports.delay = delay;