我想知道是否有一种简单的方法来获得“同步”读取线或至少在 node.js 中获得同步 I/O 的外观
我使用这样的东西,但它很尴尬
var readline = require('readline');
var rl = readline.createInterface({
input: process.stdin,
output: process.stdout,
terminal: false
});
var i = 0;
var s1 = '';
var s2 = '';
rl.on('line', function(line){
if(i==0) { s1 = line; }
else if(i==1) { s2 = line; }
i++;
})
rl.on('close', function() {
//do something with lines
})'
而不是这个,我宁愿它像这样简单
var s1 = getline(); // or "await getline()?"
var s2 = getline(); // or "await getline()?"
有用的条件:
(a) 不喜欢使用外部模块或 /dev/stdio 文件句柄,我正在向代码提交网站提交代码,但这些在那里不起作用
(b) 可以使用 async/await 或 generators
© 应该基于行
(d) 在处理之前不需要将整个标准输入读入内存
原文由 Colin D 发布,翻译遵循 CC BY-SA 4.0 许可协议
以防万一将来有人偶然发现这里
节点 11.7 使用
async await
添加 了对此的支持记得把它包装在
async function(){}
否则你会得到一个 _reserved_keyworderror 。要读取单个行,您可以手动使用
async
迭代器