javascript - 如何在 Node.js 中使用 readline 将所有输入行放入数组中?

标签 javascript node.js io

我想创建一个方便的函数来为 CodeAbbey 做这样的事情:

var rl = readline.createInterface({
  input: process.stdin,
  output: process.stdout
});

var lines = [];

rl.on('line', (line) => {
  lines.push(line);
});

return lines;

但是,由于 readline 如何充当事件处理程序,当然我得到的只是一个空数组。

如何让 readline 在这里执行所需的行为?还是我使用其他图书馆?我宁愿只使用“默认”组件,但如果我必须使用其他组件,我会使用。

最佳答案

var lines = [];

rl.on('line', (line) => {
  lines.push(line);
}).on('close', () => {
  // Do what you need to do with lines here
  process.exit(0);
});

由于 Node.js 在事件循环上运行,许多包中可用的许多功能(包括 Readline)都是异步的。通常,您需要在 close 事件发出时处理 lines

您可能会发现这个非常相似的已解决问题很有帮助: node.js: read a text file into an array. (Each line an item in the array.)

希望这对您有所帮助!

关于javascript - 如何在 Node.js 中使用 readline 将所有输入行放入数组中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41475755/

相关文章:

javascript - node/lib 中的 *.js 文件是否在 Node 可执行文件的编译过程中使用?

javascript - D3 : Zooming/Panning Line Graph in SVG is not working in Canvas

javascript - 如何在动态添加的Image上使用imagepicker.js?

javascript - 如何在node.js中循环请求

javascript - 通过 javascript 对象属性值过滤 JSON 响应

javascript - react Redux : Posting Records partly work with onclick function

node.js - 在 Ubuntu 上安装 React Native 初学者工具包期间,spawn-sync 安装后失败

c++ - 将 C++ 的相同功能/概念转换为序言

c++ - 如何修改当前正在运行的应用程序的应用程序文件(在 Linux 上)?

http - 事件循环与多线程阻塞 IO