UNPKG

nowjs-core

Version:

NowCanDo Javascript Core [nowjs-core] is a library written by TypeScript code maintains under Apache 2.0 licence

119 lines (118 loc) 3.04 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); function timeout(ms, err) { const pr = this; let err1 = new Error(`Timeout out in ${ms} miliseconds.`); if (err) { err1 = err instanceof Error ? err : new Error(err); } if (pr && pr.then) { return new Promise((resolve, reject) => { pr.then(resolve); const id = setTimeout(() => { clearTimeout(id); reject(err1); }, ms); }); } else { return new Promise((resolve, reject) => { const id = setTimeout(() => { clearTimeout(id); reject(err1); }, ms); }); } } exports.timeout = timeout; function delay(ms, defaulValue) { const pr = this; if (pr && pr.then) { const prs = new Promise(resolve => { pr.then((result) => { const id = setTimeout(() => { clearTimeout(id); resolve(result !== undefined ? result : defaulValue); }, ms); }); }); return prs; } else { const prs = new Promise(resolve => { const id = setTimeout(() => { clearTimeout(id); resolve(defaulValue); }, ms); }); return prs; } } exports.delay = delay; function wait(ms) { const pr = this; if (pr && pr.then) { const prs = new Promise(resolve => { pr.then((result) => { const id = setTimeout(() => { clearTimeout(id); resolve(result); }, ms); }); }); return prs; } else { const prs = new Promise(resolve => { const id = setTimeout(() => { clearTimeout(id); resolve(); }, ms); }); return prs; } } exports.wait = wait; function spread(fn) { const pr = this; return new Promise(resolve => { pr.then((result) => { if (Array.isArray(result)) { resolve(fn(...result)); } else { resolve(fn(result)); } }); }); } exports.spread = spread; function extendedPromise(promise, options) { const pr = this; let isCanceled = false; const prs = new Promise((resolve, reject) => { promise.then((result) => { if (!isCanceled) { resolve(result); } }); promise.catch((err) => { if (!isCanceled) { reject(err); } }); }); prs.cancel = () => { isCanceled = true; if (options && options.onCancel) { options.onCancel(); } }; prs.progress = (data) => { if (options && options.onProgress) { options.onProgress(data); } }; return prs; } exports.extendedPromise = extendedPromise;