gpt4 book ai didi

javascript - 确保在评估之前运行 javascript 中链式比较器中的所有方法?

转载 作者:行者123 更新时间:2023-11-30 08:18:03 25 4
gpt4 key购买 nike

如果我有以下片段:

onClose={() => !isPostingConfig && onClickAway() && clearRoleErrors()}

我知道如果 !isPostingConfig 返回一个 falsy 值,onClickAway()clearRoleError()不会被评估,即方法不会运行。

我知道我可以通过围绕它包装一个方法来规避它。

evaulate(){
var a = !isPostingConfig
var b = onClickAway()
var c = clearRoleError()

return a && b && c
}

但是,是否有更容易的方法来确保链式运算符中的所有方法在评估运算符之前都已运行?

最佳答案

您可以创建一个函数数组,并使用 Array.reduce() 进行循环。使用逻辑与运算符 (&&) 将每个函数的结果与前一个函数的结果组合起来。所有函数都将执行,如果所有函数都返回 true,最终结果将保持 true,如果至少有一个返回 false<,则最终结果为 false/

const evaluate = (...args) => args.reduce((r, fn) => r && fn(), true)

你可以这样调用它:

evaluate(() => !isPostingConfig, onClickAway, clearRoleError)

如果你不想用一个函数来包裹所有的表达式,你可以添加一个typeof检查:

const evaluate = (...args) => args.reduce((r, item) => r && (typeof item === 'function' ? item() : item), true)

并这样调用它:

evaluate(!isPostingConfig, onClickAway, clearRoleError)

关于javascript - 确保在评估之前运行 javascript 中链式比较器中的所有方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58699098/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com