Socket.io“on”函数 – 传递附加参数
我无法find一个很好的方式来传递额外的参数到'处理程序上的socket.io',即:
var someEventHandler = require('someEventHandler'), additionalData = {test: 1}; socket.on('event', someEventHandler);
现在我想访问位于另一个文件中的someEventHandler函数内的additionalData对象。 有没有类似的方式来传递参数给处理程序,如jQuery'on'给了我们什么? ( $obj.on('event', '.selector', dataObject, handlerFunction)
)
您可以使用另一个函数来处理事件,然后传递您需要的任何其他数据。 例:
var someEventHandler = require('someEventHandler'), additionalData = {test: 1}; socket.on('event', function(e) { someEventHandler(e, additionalData); } );
既然你不喜欢自己包装callback,你可以改变socket.on
函数来使其符合你的期望。 就像是
const originalOn = socket.on; socket.on = function (event, data, callback) { return originalOn.call(socket, event, (e) => callback(e, data)); };
你现在可以像这样使用它:
let data = {/* important data */}; socket.on('importantEvent', data, (e, additionalData) => { // Have fun with your data });