我假设这是一个范围问题。
var EventEmitter = require('events').EventEmitter;
var myevent      = new EventEmitter();
var mydata       = 'my data!';
function myfunc (data, mydata) {
  console.log(data);
  console.log(mydata);
};
myevent.on('data', function(data, mydata) {myfunc(data,mydata)});
myevent.emit('data', "data!");返回:
data!
undefined我想让它返回:
data!
my data!发布于 2012-10-06 03:52:55
我将胡乱猜测一下(因为我不熟悉EventEmitter),假设emit的第一个参数是事件的名称,其余的参数被传递给处理程序。
如果是这种情况,您不会向第二个回调参数传递任何内容,这就是它作为undefined传入的原因。试着这样做:
myevent.emit('data', "data!", "mydata!");注意:我忽略了您的隐藏问题,因为它与问题无关,只是一种糟糕的做法。
发布于 2012-10-06 03:43:57
回调参数列表中的参数mydata隐藏了同名的全局变量。
因为您没有在该位置传递任何参数,所以它的值为undefined。
以下任一项:
myevent.emit('data', "data!", mydata);附言:
myevent.on('data', function(data, mydata) {myfunc(data,mydata)});最好写成:
myevent.on('data', myfunc);发布于 2012-10-06 03:55:17
修改代码:可以访问全局变量。从任何地方你都不需要把它作为参数传递。即使你传递了一个参数。由于您使用的是nodejs,因此可以使用global.mydata访问全局变量,因此可以使用window.mydata访问全局变量
var EventEmitter = require('events').EventEmitter;
var myevent      = new EventEmitter();
var mydata       = 'my data!';
function myfunc (data) {
  console.log(data);
  console.log(mydata);
};
myevent.on('data', myfunc);
myevent.emit('data', "data!");https://stackoverflow.com/questions/12752985
复制相似问题