Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/447.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 回调函数中的参数来自哪里?Node.js_Javascript_Node.js_Callback_Eventemitter - Fatal编程技术网

Javascript 回调函数中的参数来自哪里?Node.js

Javascript 回调函数中的参数来自哪里?Node.js,javascript,node.js,callback,eventemitter,Javascript,Node.js,Callback,Eventemitter,例如,chat是一个事件发射器。回调函数可以接受名为消息的参数。我的问题是消息来自哪里?事件消息是否提供了它?如果是这样的话,你们能给我一个事件消息的示例,让我看看它何时被触发,参数是如何提供给聊天事件发射器的吗?非常感谢你们 chat.on('message',function(message){ console.log(message); }); 消息参数来自触发事件的任何事件 您可以从EventEmitter的中看到on是addListener的同义词: EventEmitter

例如,
chat
是一个事件发射器。回调函数可以接受名为
消息的参数。我的问题是
消息来自哪里?事件
消息
是否提供了它?如果是这样的话,你们能给我一个事件
消息
的示例,让我看看它何时被触发,参数是如何提供给
聊天
事件发射器的吗?非常感谢你们

chat.on('message',function(message){
    console.log(message);
});

消息
参数来自触发事件的任何事件

您可以从
EventEmitter
的中看到
on
addListener
的同义词:

EventEmitter.prototype.on = EventEmitter.prototype.addListener;
然后您可以看到,
addListener
只是将处理程序放在所提供类型(简化代码)的所有处理程序的列表中:

然后
emit
调用相应列表中的每个处理程序:

EventEmitter.prototype.emit = function(type) {
  // ...
  var args = Array.prototype.slice.call(arguments, 1);

  var listeners = this._events[type];
  for (var i = 0, l = listeners.length; i < l; i++) {
    listeners[i].apply(this, args);
  }
  return true;
  // ...
EventEmitter.prototype.emit=函数(类型){
// ...
var args=Array.prototype.slice.call(参数,1);
var listeners=this.\u事件[类型];
for(var i=0,l=listeners.length;i
})

因此,当你说
.emit('message',“Hello”)
时,
args
将是
[“Hello”]
,而
监听器[i]。apply(this,args)
将把这个参数列表发送到你在
中定义的
函数(message){/*…*/}
。on
调用:这就是
消息
变成
Hello的方式

EventEmitter.prototype.emit = function(type) {
  // ...
  var args = Array.prototype.slice.call(arguments, 1);

  var listeners = this._events[type];
  for (var i = 0, l = listeners.length; i < l; i++) {
    listeners[i].apply(this, args);
  }
  return true;
  // ...