在NodeJs request.on中传递的变量

时间:2016-12-31 21:14:49

标签: javascript node.js

我有这个代码,它为请求对象分配一个监听器,当数据到来时,执行该函数。我的问题是,“块”变量如何在函数调用中获得其值?这是对请求对象的某种隐式赋值吗?我在JS中看到了类似的模式,但并没有真正理解它们是如何工作的。任何澄清都会有所帮助。

{{1}}

1 个答案:

答案 0 :(得分:1)

emits请求对象上的"data"事件(在请求对象内)的代码将chunk参数传递给事件处理程序。由于请求对象继承自eventEmitter,因此请求对象中要宣布某些数据可用性的代码执行如下操作:

request.emit("data", chunk);

然后,使用"data"作为参数调用为chunk事件注册的事件处理程序。

这与Javascript中的任何事件处理程序相同。触发事件的代码设置事件处理程序的参数。您必须声明一个事件处理函数,该函数的参数与您在此处传递的参数相匹配。

这几乎就是回调函数在Javascript中的工作原理。调用回调的系统确定回调将被发送的参数。然后,您声明您的回调以匹配该回调,并将该回调注册到将要调用它的系统(将来的某个时间)。在这种情况下,因为它是EventEmitter,您可以使用.on()进行注册。在其他情况下,您可以通过其他方式注册(例如使用承诺,您可以使用.then().catch())。