等待流完全更新变量

Posted

技术标签:

【中文标题】等待流完全更新变量【英文标题】:Wait for streams to completely update a variable 【发布时间】:2020-11-29 22:28:52 【问题描述】:

我正在尝试从多个流中获取一些数据,并将它们附加到特定变量。代码如下。

const fs = require('fs');
data = [];
chunks = "stream1":  "start": "10", "end": "20", "stream2":  "start": "20", "end": "30";
for(let key in chunks) 
    var stream = fs.createReadStream('file.txt', start: parseInt(chunks[key].start), end: parseInt(chunks[key].end));
    stream.on('data', function(chunk) 
        data.push(chunk.toString());
    

console.log(data);

但是,数据输出的是一个空数组[]。有人请帮助我,获取data 变量中的数据然后显示它,而不是在那之前。

我想创建一个在数组长度达到特定数字时发出的事件,但它看起来很奇怪。

【问题讨论】:

您需要等待流完成***.com/a/33599789/9715163 我看过了,但没有帮助。 【参考方案1】:

结合How to use ES8 async/await with streams? 和一点“现代化”,你会想要这样的东西。

async function getData() 
  const out = [];
  const chunks =  stream1:  start: '10', end: '20' , stream2:  start: '20', end: '30'  ;
  for (const key in chunks) 
    for await (const chunk of fs.createReadStream('file.txt', 
      start: parseInt(chunks[key].start),
      end: parseInt(chunks[key].end),
    )) 
      out.push(chunk.toString());
    
  
  return out;

【讨论】:

以上是关于等待流完全更新变量的主要内容,如果未能解决你的问题,请参考以下文章

导出异步等待变量并在 JS 中完成“等待”后将其导入另一个文件

在更新状态和重定向之前等待所有承诺解决

等待 DOM 在 vue 中更新

带有异步等待变量的 pyzmq REQ/REP

如何在执行函数之前等待 Swift 中的变量? (迅速)

为啥我的 XHR 呼叫要等待对方返回响应