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
JavaScript
;
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;