最新消息: 电脑我帮您提供丰富的电脑知识,编程学习,软件下载,win7系统下载。

带有阅读文本文件的事件发送器

IT培训 admin 15浏览 0评论

带有阅读文本文件的事件发送器

我有一个包含相同数据的多行文本文件,例如:意大利辣香肠比萨饼我想要制作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();

带有阅读文本文件的事件发送器

我有一个包含相同数据的多行文本文件,例如:意大利辣香肠比萨饼我想要制作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();
发布评论

评论列表 (0)

  1. 暂无评论