我正在尝试了解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);
}
});
[...]
答案 0 :(得分:2)
fn
作为参数传递给回调函数,就在这里:
socket.on('nickname', function (nick, fn) {
^^
由于JavaScript函数是对象,因此它们可以存储在变量中 - 并作为参数传递给其他函数。
在这个特殊情况下,回调函数的使用在Socket.IO文档的“获取确认”部分中进行了说明 - 用一些数据调用它会将消息发送回给客户端作为对该消息的响应。
答案 1 :(得分:0)
fn是对on nickname事件中调用的另一个函数的引用。
答案 2 :(得分:0)
在javascript中,函数被视为对象,因此它们可以作为参数传递给回调函数。