3

我找不到将附加参数传递给 socket.io 'on' 处理程序的好方法,即:

var someEventHandler = require('someEventHandler'),
    additionalData = {test: 1};
socket.on('event', someEventHandler);

现在我想访问位于另一个文件中的 someEventHandler 函数中的 additionalData 对象。是否有类似的方法将参数传递给像 jQuery 'on' 给我们的处理程序?( $obj.on('event', '.selector', dataObject, handlerFunction))

4

2 回答 2

4

您可以使用另一个函数来处理该事件,然后传递您需要的任何其他数据。例子:

var someEventHandler = require('someEventHandler'),
    additionalData = {test: 1};
socket.on('event', function(e) { someEventHandler(e, additionalData); } );
于 2013-08-21T20:54:29.593 回答
1

由于您不喜欢自己包装回调,因此您可以更改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
});
于 2017-03-19T07:05:45.050 回答