attempts
Version:
Try func with different args.
38 lines (34 loc) • 961 B
JavaScript
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
}