//机器统计
exports.getMachineAll = (req,res,next)=>{
chart.getMachineAll()
.then((result)=>{
res.json(result);
})
}
//电话列表
exports.getPhoneList = (req,res,next)=>{
chart.getPhoneList()
.then((results)=>{
res.json(result);
})
}
mvc结构的控制器里-根据路由进来的有大量的类似这种结构,前端通过$.ajax调用,想写在一个函数里,函数名作为参数,请问该如何做呢?
可以用事件触发机制实现:
方法一
'use strict'
var events = require("events");
var proxy = new events.EventEmitter();
function reflect(funcName){
proxy.emit(funcName,"你传递的数据");
}
function getPhoneList(val){
console.log("getPhoneList操作:" + val);
}
proxy.on("getPhoneList",function(value){
//also can do otherthings
getPhoneList(value);
});
用法如下:
var args = "getPhoneList";
reflect(args);//getPhoneList操作:你传递的数据
Promise/Deferred 模式本质还是用事件形式实现的,至于JS内置对象中的Promise,不用事件方式改造的话,不能实现你需要的功能。
方法二
'use strict'
var events = require("events");
var proxy = new events.EventEmitter();
var getPhoneList = function(){
console.log(" this is getPhoneList");
}
var getMachineAll = function(val){
console.log("this is getMachineAll");
}
var funcs = [{
name:"getPhoneList",
func:getPhoneList
},
{
name:"getMachineAll",
func:getMachineAll
}];
function reflect(funcName){
proxy.emit("execute",funcName);
}
proxy.on("execute",function(funcName){
for(var f of funcs){
if (f.name===funcName) {
(f.func)();
break;
}
}
});
用法如下:
var args = "getMachineAll";
reflect(args);//返回结果://this is getMachineAll
方法三
function getPhoneList(){
console.log("this is liudong");
}
eval("getPhoneList"+"()");
如果对你有帮助,欢迎采纳