一个网友的求助:
https://stackoverflow.com/questions/49788422/socket-on-event-gets-triggered-multiple-times
其他朋友建议他用socket.once, 而非socket.on
socket对象本身并没有on的方法:
原型链上才有:
执行on(“createKOIID”, fn)之前的监听事件函数池:
使用on注册之后:
再看once的实现:
on是一个函数,once传入的监听函数作为一个属性赋值到on上:
然后照常用on注册事件:
注册完毕。
事件触发时,首先执行on:
在on里面会先解除掉对event的注册:
第1600行会把事件处理函数从handler repository里移除掉。
最后执行对应的事件处理函数。
学完还想练练?点这里。