UNPKG

attempts

Version:

Try func with different args.

38 lines (34 loc) 961 B
function attempts (vals, fn) { if (fn instanceof Array && typeof vals === 'function') { var assign; (assign = [vals, fn], fn = assign[0], vals = assign[1]) } return vals.reduce(function (prev, curr) { return prev.then(function (resolved) { return resolved; }, function (rejected) { try { var ret = fn.apply(void 0, [].concat(curr)) return ret ? Promise.resolve(ret) : Promise.reject() } catch (e) { return Promise.reject() } }) }, Promise.reject()) } function attemptsSync (vals, fn) { if (fn instanceof Array && typeof vals === 'function') { var assign; (assign = [vals, fn], fn = assign[0], vals = assign[1]) } return vals.reduce(function (prev, curr) { if (prev) { return prev } try { var ret = fn.apply(void 0, [].concat(curr)) return ret } catch (e) {} }, false) } module.exports = { default: attempts, async: attempts, sync: attemptsSync }