文本文件的事件发送器"/>
带有阅读文本文件的事件发送器
我有一个包含相同数据的多行文本文件,例如:意大利辣香肠比萨饼我想要制作eventEmmiter,该文件在读取此文件时会执行某些事件。例如,如果文本中有意大利辣味香肠,则将输出意大利辣味香肠事件,然后输出结果事件。我不知道如何绑定eventemmiter和读取文件这就是我试图做的]
const fs = require('fs');
const EventEmitter = require('events');
let readstream = fs.createReadStream('text.txt', {encoding: 'utf8'});
readstream.on('data', (data)=> {
data.toString();
})
const emitter = new EventEmitter();
emitter.on('result', (data)=> {
console.log(`enjoy your pizza`);
})
emitter.on('peperoni', (data)=> {
if (data.includes("peperonu")==1) {
console.log(`event peperoni is ${data}`);
emitter.emit('result', data);
}
})
emitter.on('margarita', (data)=> {
if (data.includes("margarita")==1) {
console.log(`event margarita is ${data}`);
emitter.emit('result', data);
}
})
emitter.emit('peperoni', readstream.on);
回答如下:您可以使用readline,这将返回一个可读的界面,并产生每一行。在我的示例中,我发出一个result
事件,但是您可以注册并更改此事件以适合您的需要。
const fs = require("fs");
const EventEmitter = require("events");
const readline = require("readline");
const emitter = new EventEmitter();
emitter.on("result", (line) => {
console.log(line);
});
async function main() {
const readStream = fs.createReadStream("text.txt", { encoding: "utf8" });
const rl = readline.createInterface({
input: readStream,
crlfDelay: Infinity
});
for await (const line of rl) {
if (line.includes("margarita")) {
console.log(`event margarita is ${line}`);
emitter.emit("result", line);
}
if (line.includes("peperoni")) {
console.log(`event peperoni is ${line}`);
emitter.emit("result", line);
}
}
}
main();
更多推荐
带有阅读文本文件的事件发送器
发布评论