如何在所有数据都准备好后才访问数据



我看到过这样的代码:

  .on('error', console.error)
  .on('data', function (data) {})
  .on('info', function(info) {})
  .on('end', function() {
    // All data retrieved.
  });

我读过一些关于流的文档,但很难理解它们。假设我只想在收到所有数据(而不是部分数据)后进行操作。我该怎么做?我想我必须读取"end"函数内部的数据对象,但无法从那里访问数据对象。

根据我的理解,如果我在"数据"函数中加入一些逻辑,我可能会对不完整的数据进行操作?这是真的吗?假设数据是一个朋友列表(有些列表有1个朋友,有些列表可能有10000个朋友,所以返回的数据大小不同)。无论返回的数据大小,我如何才能在返回所有好友后才进行操作?

data处理程序通常会被调用多次,每次都使用完整数据的一小部分。

如果您想用所有数据执行一次操作,通常的方法如下:

data处理程序中接收到的所有项缓冲在某个变量中(例如,添加到数组中),并在end处理程序中执行最终操作。(尽管溪流的概念自然是立即"行动")。

var allData = [];
stream
.on('error', console.error)
.on('data', function (data) {
    allData.push(data);
 })
.on('info', function(info) {})
.on('end', function() {
    // TODO do something more intelligent,
    // where buffering in memory makes sense
    console.log(allData.join());
});

相关内容

  • 没有找到相关文章

最新更新