【问题标题】:Set value of callback function nodejs设置回调函数nodejs的值
【发布时间】:2015-06-15 14:07:57
【问题描述】:
socket.on('test', function (call, callback){ 
    $('.button_1').on('click', function(){
        callback('button_1 is clicked'); 
    });
    $('.button_2').on('click', function(){
        callback('button_2 is clicked');
    });
});

我不知道在这种情况下如何设置回调值。 当我删除第一个 callback(); 并保留第二个或删除第二个并保留第一个时,我的代码工作正常,但是当我保留它们时,代码都不起作用全部

【问题讨论】:

  • 回调本身就是一个值,如果你设置它,你可以删除它,或者取消引用它,取决于..
  • 那么这是什么?它看起来像套接字侦听器的客户端部分,如果是这样,我认为它只有一个参数,接收到的数据?
  • @adeneo 我不明白你的意思,代码不起作用,我不知道为什么?

标签: javascript callback socket.io


【解决方案1】:

由于callback 是您传递给on() 的函数的参数,因此on() 函数负责确定回调。

根据我对 socket.io 文档的阅读:它根本没有传递第二个参数。

所以你需要备份。

socket.on('test', function (call, callback){ 
                                  ^^^^^^^^

删除它。它不会被使用,并且会在更广泛的范围内屏蔽任何回调。

然后在其他地方(即在更广泛的范围内)添加一个回调函数:

function callback(string_of_what_is_clicked) {
    alert(string_of_what_is_clicked);
}
socket.on('test', function (call){ 
    $('.button_1').on('click', function(){
        callback('button_1 is clicked'); 
    });
// etc

这是一个客户端部分,它向服务器端发送一个回调,告诉他们点击了哪个按钮。我的问题和你的解决方案没有关系

如果您想在单击按钮时从客户端向服务器发送消息,则不要使用on。你使用emit

$('.button_1').on('click', function(){
    socket.emit('button clicked', 'button_1 is clicked'); 
});

然后socket监听事件:

socket.on('button clicked', function (msg) {
    console.log('click: ' + msg);
});

【讨论】:

  • 这是一个客户端部分,它向服务器端发送一个回调,告诉他们点击了哪个按钮。我的问题和你的解决方案没有关系
  • @ler — 你的问题在解释你想要做什么方面做得非常糟糕。我已根据您的评论更新了答案。
  • 我需要将单击的按钮名称作为回调发送,而不是作为新套接字发送
  • 您不能将某事物的名称作为回调发送。某事物的名称为字符串,回调必须是函数。我不知道您为什么认为涉及新套接字。您在现有套接字上调用 emit
  • 我的意思是我不想调用emit,无论如何我会解释我的问题:你说我不能发送一个错误的字符串的名称,因为当我删除第一个回调时('button_1 is clicked'); 代码工作正常我的意思是当我点击按钮 1 时它不会发送任何内容,因为我删除了 callback('button_1 is clicked');但是当我点击按钮 2 时它发送到服务器 ' 按钮 2 被点击' 所以我想同时保持 callback('button_1 is clicked');callback('button_2 is clicked'); 这不起作用,只要我删除一个并留下一个就可以了
猜你喜欢
  • 2021-06-01
  • 2019-07-25
  • 1970-01-01
  • 2011-11-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-25
  • 1970-01-01
相关资源
最近更新 更多