javascript - 带有事件发射器的 ReferenceError
问题描述
我尝试使用 eventemitter,但我对 processLineByLine 有参考错误。在这段代码中,我有文本多行文件,每一行我都转换为大写。每次转换为大写都是我的事件。我做错了什么
const fs = require('fs');
const readline = require('readline');
let events = require('events');
let myEmitter = new events.EventEmitter();
myEmitter.on ('upper', async function processLineByLine(){
const fileStream = fs.createReadStream('text.txt');
const rl = readline.createInterface({
input: fileStream,
crlfDelay: Infinity
});
for await (const line of rl) {
console.log(line.toUpperCase());
}});
myEmitter.emit ('upper',processLineByLine() );
解决方案
(异步)函数表达式定义函数,但不将它们分配给变量。您需要的是一个(异步)函数语句。
const fs = require('fs');
const readline = require('readline');
const {EventEmitter} = require('events');
let myEmitter = new EventEmitter();
async function processLineByLine() {
const fileStream = fs.createReadStream('text.txt');
const rl = readline.createInterface({
input: fileStream,
crlfDelay: Infinity
});
for await (const line of rl) {
console.log(line.toUpperCase());
}
}
myEmitter.on('upper', processLineByLine);
myEmitter.emit('upper', processLineByLine());
另外,我不确定您要做什么。在此代码中,processLineByLine
将调用两次,一次不带参数,一次以自身作为参数。