UNPKG

1.04 kBJavaScriptView Raw
1var _require = require('./AbortController'),
2 createAbortError = _require.createAbortError;
3/**
4 * Return a Promise that resolves after `ms` milliseconds.
5 *
6 * @param {number} ms - Number of milliseconds to wait.
7 * @param {{ signal?: AbortSignal }} [opts] - An abort signal that can be used to cancel the delay early.
8 * @returns {Promise<void>} A Promise that resolves after the given amount of `ms`.
9 */
10
11
12module.exports = function delay(ms, opts) {
13 return new Promise(function (resolve, reject) {
14 if (opts && opts.signal && opts.signal.aborted) {
15 return reject(createAbortError());
16 }
17
18 function onabort() {
19 clearTimeout(timeout);
20 cleanup();
21 reject(createAbortError());
22 }
23
24 var timeout = setTimeout(function () {
25 cleanup();
26 resolve();
27 }, ms);
28
29 if (opts && opts.signal) {
30 opts.signal.addEventListener('abort', onabort);
31 }
32
33 function cleanup() {
34 if (opts && opts.signal) {
35 opts.signal.removeEventListener('abort', onabort);
36 }
37 }
38 });
39};
\No newline at end of file