javascript - 请问nodejs里如何实现promise动态指定函数名?
怪我咯
怪我咯 2017-04-11 13:22:03
[JavaScript讨论组]
//机器统计
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调用,想写在一个函数里,函数名作为参数,请问该如何做呢?

怪我咯
怪我咯

走同样的路,发现不同的人生

全部回复(2)
伊谢尔伦

可以用事件触发机制实现:
方法一

'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"+"()");

如果对你有帮助,欢迎采纳

伊谢尔伦
chart['getPhoneList']()
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号