最新消息: 电脑我帮您提供丰富的电脑知识,编程学习,软件下载,win7系统下载。

检查函数名称是否存在并通过字符串调用

IT培训 admin 9浏览 0评论

检查函数名称是否存在并通过字符串调用

我正在尝试促进和组织套接字通信和Node.JS之间的工作(我的项目太大)

不是使用客户端中的socket.emit()函数,而是使用我创建的函数:

function socketEmit(socketName, functionName, data){
    socket.emit(socketName, {functionName: functionName, data: data});
}
socketEmit('exampleClass', 'exampleFunction', 'test');
socketEmit('exampleClass2', 'exampleFunction2', 'test');

发出后,我使用此功能在服务器端获取套接字(socket.on)。并根据“ socketName”]在类中注册它

socket.on('exampleClass', function (socketData){
        var exampleClass = require('./server/exampleClass.js');
        exampleClass.registerSocket(socket, socketData);
})
socket.on('exampleClass2', function (socketData){
        var exampleClass2 = require('./server/exampleClass2.js');
        exampleClass2.registerSocket(socket, socketData);
})

在类中具有该功能的“ registerSocket”以执行相同的功能

exampleClass.js

module.exports = {
    registerSocket: function(socket, socketData){
        var functionName = socketData.functionName;
        var data = socketData.data;
        [functionName](socket, data);
    },
}

function exampleFunction(socket, data){
  console.log('test');
}

但是,registerSocket函数的这一部分出现错误:

[functionName] is not a function

我正在尝试促进和组织我的套接字通信和Node.JS之间的工作(我的项目太大),我使用我创建的函数来代替客户端的socket.emit()函数:...

回答如下:

您正在尝试调用数组[functionName](socket, data);

检查函数名称是否存在并通过字符串调用

我正在尝试促进和组织套接字通信和Node.JS之间的工作(我的项目太大)

不是使用客户端中的socket.emit()函数,而是使用我创建的函数:

function socketEmit(socketName, functionName, data){
    socket.emit(socketName, {functionName: functionName, data: data});
}
socketEmit('exampleClass', 'exampleFunction', 'test');
socketEmit('exampleClass2', 'exampleFunction2', 'test');

发出后,我使用此功能在服务器端获取套接字(socket.on)。并根据“ socketName”]在类中注册它

socket.on('exampleClass', function (socketData){
        var exampleClass = require('./server/exampleClass.js');
        exampleClass.registerSocket(socket, socketData);
})
socket.on('exampleClass2', function (socketData){
        var exampleClass2 = require('./server/exampleClass2.js');
        exampleClass2.registerSocket(socket, socketData);
})

在类中具有该功能的“ registerSocket”以执行相同的功能

exampleClass.js

module.exports = {
    registerSocket: function(socket, socketData){
        var functionName = socketData.functionName;
        var data = socketData.data;
        [functionName](socket, data);
    },
}

function exampleFunction(socket, data){
  console.log('test');
}

但是,registerSocket函数的这一部分出现错误:

[functionName] is not a function

我正在尝试促进和组织我的套接字通信和Node.JS之间的工作(我的项目太大),我使用我创建的函数来代替客户端的socket.emit()函数:...

回答如下:

您正在尝试调用数组[functionName](socket, data);

发布评论

评论列表 (0)

  1. 暂无评论