套接字中fn()的含义.IO聊天示例代码

meaning of fn() in the socket.io chat sample code

本文关键字:聊天 IO 代码 fn 套接字      更新时间:2023-09-26

我试图理解从socket.io/examples/chat/app.js的代码。我无法解释第71行和第73行 fn() 调用的含义。我想这是一个回调函数,但它的定义在哪里?它是app.js中另一个函数的简短调用吗?…
它是socket对象的一个原型函数的调用吗?

片段是(第69-78行):

[...]
    socket.on('nickname', function (nick, fn) {
        if (nicknames[nick]) {
          fn(true);
        } else {
          fn(false);
          nicknames[nick] = socket.nickname = nick;
          socket.broadcast.emit('announcement', nick + ' connected');
          io.sockets.emit('nicknames', nicknames);
        }
    });
[...]

fn作为参数传递给回调函数,就在这里:

socket.on('nickname', function (nick, fn) {
                                      ^^

由于JavaScript函数是对象,它们可以存储在变量中,并作为参数传递给其他函数。

在这种特殊情况下,回调函数的use在Socket的"获取确认"一节中讨论。IO文档——用一些数据调用它,发送一个消息回客户端作为对该消息的响应。

fn是对on昵称事件中调用的另一个函数的引用。

在javascript中,函数被视为对象,因此它们可以在回调函数中作为参数传递。