gpt4 book ai didi

node.js - 如何在 NodeJs 中对事件使用 readline(等待流关闭)

转载 作者:太空宇宙 更新时间:2023-11-03 23:57:01 24 4
gpt4 key购买 nike

我正在创建一个机器人,当它收到消息时,它开始读取文本文件并使用文件内容响应消息。

不幸的是,我无法摆脱这个异步 hell ,我只得到错误、未定义或 promise

最后一个实验是这样的:

const fs = require('fs');
const readline = require('readline');

// bot.listen("message").reply(responseText())

function readFile(file) {
var text = '';
var readInterface = readline.createInterface({
input: fs.createReadStream(file),
terminal: false
});

readInterface.on('line', function(line) {
linea = line.trim();
console.log(linea);
text += linea;
}).on('close', function() {
return text;
});
});
}

async function responseText() {
var content = await readFile("file.txt");
content.then(function(data) {
return data;
})
}

我想要得到的是延迟响应,直到我得到文件的内容。我知道 Node 是基于异步的,但我不知道如何处理它!

谢谢大家

最佳答案

如果你想使用async-await需要创建一个promise并返回它。

function readFile(file) {
return new Promise((res, rej) => {
try {
var text = '';
var readInterface = readline.createInterface({
input: fs.createReadStream(file),
terminal: false
});

readInterface
.on('line', function (line) {
linea = line.trim();
text += linea;
})
.on('close', function () {
res(text);
});
} catch(err){
rej(err)
}
});
}

关于node.js - 如何在 NodeJs 中对事件使用 readline(等待流关闭),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56613271/

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