gpt4 book ai didi

node.js - 如何在nodejs中使用异步获取同步readline或 "simulate"?

转载 作者:行者123 更新时间:2023-12-02 06:19:57 28 4
gpt4 key购买 nike

我想知道是否有一种简单的方法来获取“同步”readline 或至少在 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 或生成器

(c) 应基于行

(d) 在处理之前不应要求将整个标准输入读入内存

最佳答案

以防万一将来有人偶然发现这里

添加 Node 11.7 support for this使用async await

const readline = require('readline');
//const fileStream = fs.createReadStream('input.txt');

const rl = readline.createInterface({
input: process.stdin, //or fileStream
output: process.stdout
});

for await (const line of rl) {
console.log(line)
}

记得用async function(){}包起来否则您将收到reserved_keyword_error

const start = async () =>{
for await (const line of rl) {
console.log(line)
}
}
start()

要读取单个行,您可以使用 async手动迭代器

const it = rl[Symbol.asyncIterator]();
const line1 = await it.next();

关于node.js - 如何在nodejs中使用异步获取同步readline或 "simulate"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43638105/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com