javascript - Socket.io动态 "on"绑定(bind)

标签 javascript node.js socket.io dom-events

我有这个代码:

var action = "getPost";

clients[socket.id].on(action, function(data) {
            var message = {
                sender : "",
                receiver : "moderation",
                m : {action : action, data: data, socket: socket.id}
            }
            console.log(message);
            console.log("Sockets executing: ", action);
            //process.send(message);
        });

action = "canIGetHoldedPost";

clients[socket.id].on(action, function(data) {
            var message = {
                sender : "",
                receiver : "moderation",
                m : {action : action, data: data, socket: socket.id}
            }
            console.log(message);
            console.log("Sockets executing: ", action);
            //process.send(message);
        });

我的问题:当我发出其中一个函数时,它会以正文中的最后一个操作值(“canIGetHoldedPost”)执行(m:{action:“canIGetHoldedPost”) >)。如何绑定(bind)此函数以获得预期结果?

我不能只在正文中编写所需的操作,因为它将是一个包含许多事件的循环,而不仅仅是我在这里编写的两个事件。

最佳答案

这是您需要关闭的地方,您没有获得预期值的原因是,在调用回调时,action 的值已被替换。

您可能可以创建一个绑定(bind)事件的函数。这样,action 的值将被保留,直到回调被执行。

var action = "getPost";
bind(action);

action = "canIGetHoldedPost";
bind(action);

function bind(ac) {
    var action = ac;

    clients[socket.id].on(action, function(data) {
        var message = {
                sender : "",
                receiver : "moderation",
                m : {action : action, data: data, socket: socket.id}
        }
        console.log(message);
        console.log("Sockets executing: ", action);
        //process.send(message);
    });
}

关于javascript - Socket.io动态 "on"绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21278482/

相关文章:

javascript - 如何使用javascript限制文本框中的字符数和行数?

javascript - 哪个更好 : mobile/desktop code in same file, 或在单独的文件中?

javascript - 访问部分 javascript 数组 (mysqljs)

mysql - Sequelize 获取属性中的关联模型数据

node.js - 通过 Socket.io 连接进行 JWT 授权

javascript - 如果从函数 (d) 设置,d3 鼠标悬停事件不会正确触发

javascript - Nest JS 无法解析服务中的依赖关系

android - 当应用程序被终止时未收到通知 FCM 与 Firebase 的 Cloud Functions

javascript - socket.io 客户端连接到服务器但不通信

javascript - Socket I - 它如何自动连接回服务器?