socket.io chat示例代码中fn()的含义

时间:2011-10-10 21:35:50

标签: javascript node.js

我正在尝试了解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);
        }
    });
[...]

3 个答案:

答案 0 :(得分:2)

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

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

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

在这个特殊情况下,回调函数的使用在Socket.IO文档的“获取确认”部分中进行了说明 - 用一些数据调用它会将消息发送回给客户端作为对该消息的响应。

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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