NodeJ的request.on中传递的变量



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

request.on("data",function(chunk){
response.write(chunk.toString().toUpperCase()) ;
})

emits请求对象上的"data"事件(请求对象内部)将chunk参数传递给事件处理程序的代码。由于请求对象继承自eventEmitter,因此请求对象内部想要通知某些数据可用性的代码如下所示:

request.emit("data", chunk);

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

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

这就是回调函数在Javascript中的工作方式。调用回调的系统确定将发送回调的参数。然后,您声明您的回调与之匹配,并向将要调用它的系统注册该回调(将来某个时候)。在这种情况下,因为它是EventEmitter,所以您可以将它注册到.on()。在其他情况下,您可能会以其他方式注册它(例如使用promise,您将使用.then().catch())。

最新更新