我找不到将附加参数传递给socket.io'on'处理程序的好方法,即:
var someEventHandler = require('someEventHandler'),
additionalData = {test: 1};
socket.on('event', someEventHandler);
现在我想访问位于另一个文件中的someEventHandler函数中的additionalData对象。有没有类似的方法将参数传递给像jQuery'on'给我们的处理程序? ($obj.on('event', '.selector', dataObject, handlerFunction)
)
答案 0 :(得分:3)
您可以使用另一个函数来处理事件,然后传递您需要的任何其他数据。例如:
var someEventHandler = require('someEventHandler'),
additionalData = {test: 1};
socket.on('event', function(e) { someEventHandler(e, additionalData); } );
答案 1 :(得分:0)
由于您不喜欢自己包装回调,因此您可以更改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
});