JS lodash
世界的背景目前我正在尝试轻松实现多个OR语句分配的模拟。 通常我们会这样做:
let myOption = argumentAssigned || tryToGetFromOtherSource('sourceA') || tryToGetFromOtherSource('sourceB');
为了成功,我希望有类似的东西:
let myOption = _.X(
argumentAssigned,
_.partial(tryToGetFromOtherSource, 'sourceA'),
_.partial(tryToGetFromOtherSource, 'sourceB') );
当然,如果以前带来真正的结果,则不执行其他功能。
答案 0 :(得分:1)
我不知道它是否在lodash中,但您可以自己编写此功能。我选择传递一个论点;如果函数没有参数,那么懒惰评估它们似乎没有意义(因为它们要么是不纯的,要么只是常量)。
const firstTruthy = ([f, ...fs], x) =>
f ? f(x) || firstTruthy(fs, x) : null;
// Example app
const repo1 = k => ({ "a": 1 })[k];
const repo2 = k => ({ "b": 2 })[k];
const getKey = k => firstTruthy([repo1, repo2], k);
console.log(getKey("a"));
console.log(getKey("b"));
console.log(getKey("c"));