ts-prime
Version:
A utility library for JavaScript and Typescript.
27 lines (26 loc) • 769 B
JavaScript
import { isError } from './index';
import { purry } from './purry';
export function timeout() {
return purry(_timeout, arguments);
}
function _timeout(fn, maxDuration) {
return function () {
var args = [];
for (var _i = 0; _i < arguments.length; _i++) {
args[_i] = arguments[_i];
}
return Promise.race([
new Promise(function (resolve) {
setTimeout(function () {
resolve(new Error((fn.name + " timeout after " + maxDuration + "ms").trim()));
}, maxDuration);
}),
fn.apply(void 0, args),
]).then(function (q) {
if (isError(q)) {
throw q;
}
return q;
});
};
}