如何为每个功能重用条件检查?

How to reuse conditional check for each function?

我有很多这样的函数示例

function update() {
  if (isAdminUser()) {
    return false;
  }
  ...
}
function get() {
  if (isAdminUser()) {
    return false;
  }
  ...
}
...

是否有任何可能的方法来获得条件语句

 if (isAdminUser()) {
   return false;
 })

写一次,运行在每个函数的开头单独写。我正在使用 javascript

如果您使用 TypeScript,请尝试装饰器。

文档:https://www.typescriptlang.org/docs/handbook/decorators.html#decorators

也许您可以定义一个函数,该函数可以接受另一个函数作为参数,如果该函数(即您的代码片段中的 isAdminUser)returns 为 false returns true

const checkUser = func => func() && false

那么函数可以像这样使用:

function update() {
    if (checkUser(isAdminUser)) {
        // update() logic will only run if user is not admin
    }

}
function get() {
   if (checkUser(isAdminUser)) {
      // get() logic will only run if user is not admin   
   }
 }

在特定函数 运行 之前,您可以使用高阶函数来封装 运行 所需的逻辑。高阶函数将函数作为参数,因此您的问题的可能解决方案如下所示:

function withIsAdminUser(callback) {
  return function() { 
    if (isAdminUser()) {
      return false;
    }
    return callback();
  }
}

function getRaw() {
  // Do something here, this whole function could also be inlined
}
const get = withIsAdminUser(getRaw);