我正在使用模拟器。手头的任务是某个端点上的传入请求。该请求可能包含req.body.options中的1-4个选项。基本的设计思想是一个对象包含选项和相应的方法调用(作为某种子路由器)。
let dataActions = {
option1: optionMethod(param1, param2),
option2: optionMethod2(param1, param2),
option3: optionMethod3(params),
option4: optionMethod4(params)
}
for (key in req.body.options) {
...
}
for ... in应该在使用dataActions键在请求中找到匹配时触发方法(在其他文件中解耦)。是否有一种语义方式或详细的设计模式才能使其发挥作用?
答案 0 :(得分:1)
问题是你已经自己解雇了这些方法。
let dataActions = {
option1: optionMethod(param1, param2) // <-- this is a function call
}
这样做可以将optionMethod()
的结果分配给option1
。以上是
let dataActions = {};
dataActions.option1 = optionMethod(param1, param2);
如果这有助于使其更明显。
您不想立即调用这些方法。您想要存储它们以供以后使用。直接存储它们:
let dataActions = {
option1: optionMethod // <-- this is a function reference
}
...或存储以某种特定方式调用它们的函数:
let dataActions = {
option1: function () {
return optionMethod('some', 'parameters');
}
}
现在你可以在另一个时间使用它们,例如像这样
Object.keys(dataActions).filter(a => a in req.body.options).forEach(a => {
var optionMethod = dataActions[a];
optionMethod();
});