我遇到socket.io的问题,至少我认为,我的客户端代码中的函数没有在socket.on('connect', onsocketConnected);
上调用
但是,如果我把条件如:
if(socket.connect) {
onsocketConnected();
}
然后调用我的函数。我也意识到如果我把它写成像
socket.on('connect', onsocketConnected());
我的函数被正确调用。我的问题是,在从客户端到服务器的连接上,是否连接了一个自动提供给客户端的值?查看https://socket.io/docs/client-api/处的文档,它指出它应该以{{1}}的形式工作
回调函数中的括号是否始终需要它才能工作?因为看起来他们在没有括号的情况下在其他地方工作。任何资源或文档指针都非常感谢。
答案 0 :(得分:0)
为了调用函数(回调或其他),当函数没有得到任何参数时,你仍然应该用()
来调用它。 I.E:onsocketConnected
()
;
socket.on('connect', onsocketConnected);
无效的原因是因为您在调用函数时缺少()
。
你正在做的是将变量/对象(不存在)onsocketConnected
传递给socket.on
方法,而不是传递功能强>
使用它的正确方法与您之后输入的一样:socket.on('connect', onsocketConnected());
有关JS函数参数的文档:http://devdocs.io/javascript/functions/arguments