如何为每个功能重用条件检查?
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);
我有很多这样的函数示例
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);