UNPKG

prex

Version:

Async coordination primitives and extensions on top of ES6 Promises

51 lines (49 loc) 1.69 kB
"use strict"; /*! ***************************************************************************** Copyright (c) Microsoft Corporation. Licensed under the Apache License, Version 2.0. See LICENSE file in the project root for details. ***************************************************************************** */ Object.defineProperty(exports, "__esModule", { value: true }); const cancellation_1 = require("./cancellation"); const adapter_1 = require("./adapter"); /** * Waits the specified number of milliseconds before resolving with the provided value. * * @param token A CancellationToken * @param msec The number of milliseconds to wait before resolving. * @param value An optional value for the resulting Promise. */ function delay(token_, msec_, value) { let token; let msec; if (typeof token_ === "number") { value = msec_; msec = token_; token = cancellation_1.CancellationToken.none; } else { msec = msec_; token = adapter_1.getToken(token_); } if (!token.canBeCanceled) { return new Promise(resolve => setTimeout(resolve, msec, value)); } return new Promise((resolve, reject) => { token.throwIfCancellationRequested(); const handle = setTimeout(() => { registration.unregister(); resolve(value); }, msec); const registration = token.register(() => { clearTimeout(handle); try { token.throwIfCancellationRequested(); } catch (e) { reject(e); } }); }); } exports.delay = delay;