[英]How to pass cycle variable to event callback function using Javascript
[英]Pass global variable to on event callback function in Javascript?
在下面的代码中,我试图将mydata
传递给回调。 这是我遇到的一个更大问题中的一个示例问题。 我假设这是一个范围问题。 我的代码有什么问题和/或应该怎么办?
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!
回调的参数列表中的参数mydata
隐藏了相同名称的全局变量。
当您在该位置没有传递参数时,其值是undefined
。
要么:
myevent.emit('data', "data!", mydata);
ps:
myevent.on('data', function(data, mydata) {myfunc(data,mydata)});
最好写成:
myevent.on('data', myfunc);
我将做出一个疯狂的猜测(因为我对EventEmitter
并不熟悉),并说emit
的第一个参数是事件的名称,其余参数则传递给处理程序。
如果是这样,您就不会传递任何东西给第二个回调参数,这就是为什么它以undefined
。 试试这个代替:
myevent.emit('data', "data!", "mydata!");
注意:我忽略了您的影子问题,因为它与问题无关,只是一种不好的做法。
修改后的代码:您可以访问全局变量。 从任何地方都不需要将其作为参数传递。 即使您传递参数。 您可以通过访问一个全局变量window.mydata
,因为你正在使用您的NodeJS可以使用访问一个全局变量global.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!");
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.