Я пытаюсь выполнить функцию после того, как asyn c EventEmitter закончил, но я попробовал process.nexttick или setImediate, но они не работают, как я ожидал.
вот пример кода
const fs = require('fs');
const EventEmitter = require('events');
class WithTime extends EventEmitter {
execute(asyncFunc, ...args) {
console.time('execute');
this.emit('begin');
asyncFunc(...args, (err, data) => {
if (err){
return this.emit('error', err)
}
this.emit('data', data);
console.timeEnd('execute');
this.emit('end');
})
}
}
const withTime = new WithTime();
withTime.on('begin', () => console.log('About to execute'));
withTime.on('end', () => console.log('Done with execute'));
withTime.on('data', (data) => console.log('Length: ', data.length));
withTime.on('data', (data) => console.log('Characters: ', data.toString().length));
withTime.prependListener('data', (data) => console.log('Characters prepend: ', data.toString().length));
console.log('__filename1', __filename)
withTime.execute(fs.readFile, __filename);
process.nextTick(() => {
console.log(1)
})
Я хочу, чтобы console.log (1) отображался после запуска функции withtime.execute, но он всегда отображается перед функцией withtime.execute, кто-нибудь, помогите мне, пожалуйста