【问题标题】:Socket.io dynamic "on" bindingSocket.io 动态“开启”绑定
【发布时间】:2014-01-22 09:08:07
【问题描述】:

我有这个代码:

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);
        });

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

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

【问题讨论】:

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


    【解决方案1】:

    这是你需要关闭的地方,你没有得到预期值的原因是当回调被调用时,action 的值被替换了。

    您可能可以创建一个绑定事件的函数。这样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);
        });
    }
    

    【讨论】:

    • "这是你需要关闭的地方,你没有得到预期值的原因是当回调被调用时,action 的值被替换了。" - 我已经弄清楚了,但不知道如何覆盖它。非常感谢!
    猜你喜欢
    • 1970-01-01
    • 2012-10-29
    • 1970-01-01
    • 2023-03-17
    • 2015-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多