一尘不染

注册后监听事件是否安全?

node.js

我是NodeJS的新手,正在学习它如何与流一起工作。读一本书,我发现了以下示例代码:

var CountStream = require('./countstream');
var countStream = new CountStream('book');
var http = require('http');

http.get('http://www.manning.com', function(res) {
    res.pipe(countStream);
});

countStream.on('total', function(count) {
    console.log();
});

在此代码段中,我们先调用http.getmethod,然后等待回调( 第1部分 )。

在下一行,我们正在监听total事件( 第2部分 )。

问题: 如果在第1部分和第2部分之间发生延迟,那么首先执行第1部分的回调(在第2部分开始侦听total事件之前。那是真的会丢失第一个数据块)吗?


阅读 190

收藏
2020-07-07

共1个答案

一尘不染

不,因为您 不是在“等待” 回调。回调是 异步的 ,将在http.get函数返回后执行。第2部分将在调用回调函数(第1部分)之前执行。

仅在构造之后构造一个异步事件发射器并注册事件处理程序是完全安全的(只要它是同步发生的),因为事件只会在事件循环的下一轮发出。

2020-07-07