【问题标题】:Unexpected reserved word in for await - Would appreciate clarification o existing answer等待中的意外保留字-希望对现有答案进行澄清
【发布时间】:2021-05-08 15:01:40
【问题描述】:

我是 NodeJS 和一般编码的新手,在寻找将 Node.js 流的内容读入 StackOverflow 上的字符串变量的答案时,我遇到了这个答案:https://stackoverflow.com/a/63361543/15144023

答案中可以看到如下代码:

// lets have a ReadableStream as a stream variable

const chunks = [];

for await (let chunk of stream) {
    chunks.push(chunk)
}

const buffer  = Buffer.concat(chunks);
const str = buffer.toString("utf-8")

(感谢Traycho Ivanov的答案)

我在等待字中得到“意外的保留字”,我无法理解如何修复它以及如何实际使用它。不幸的是,作为 StackOverflow 的新手,我无法对答案发表评论,这也是我使用这种方法的原因。

【问题讨论】:

  • 你使用的是哪个版本的 node.js?
  • @Raeesaa 版本 v15.8.0 :)

标签: node.js


【解决方案1】:

我假设原始答案只是一个 sn-p 而不是完整的解决方案,因为您只能在异步函数中使用 for await 循环。这是一个完整的工作示例,其中 for await 包装在匿名异步函数中。注意我还初始化了一个模拟流。

const { Readable } = require('stream');

// Mocking a stream for demo purposes
const stream = Readable.from(Buffer.from('this is a test string', 'utf-8'));

(async function() {
  const chunks = [];

  for await (let chunk of stream) {
      chunks.push(chunk)
  }

  const buffer  = Buffer.concat(chunks);
  const str = buffer.toString("utf-8")
  console.log(str);
})();

【讨论】:

  • 好吧,这是有道理的,我之前尝试过类似的方法,但不知道如何从中得到任何东西。我没有调用它,也没有创建流。这很有帮助,谢谢!!我的目标是将原本要发送到标准输出的数据的输出保存到变量中,以便我可以决定何时将它们发送到标准输出或将它们放入文件中。我有一些想法可以尝试使用此功能,您认为还有更好的方法吗? (P.S. 很抱歉我还不能投票 :( )
  • 不用担心。很高兴我能提供帮助,欢迎来到 SO!我可能需要更多地了解您的用例才能发表意见,但如果您想检查一次所有流内容,这个选项似乎没问题。但是,如果您想逐步检查流内容,可以使用stream.on('data', callbackFunc) 并在callbackFunc 中进行检查。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-10-03
  • 2021-11-05
  • 2023-03-12
  • 2018-01-20
  • 2021-12-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多