标签 EventEmitter 下的文章

简述以下代码的输出结果,并解释执行过程:

import { once, EventEmitter } from 'node:events';
import process from 'node:process';

const ee = new EventEmitter();

process.nextTick(() => {
  ee.emit('myevent', 42);
});

const [value] = await once(ee, 'myevent');
console.log(value);

const err = new Error('kaboom');
process.nextTick(() => {
  ee.emit('error', err);
});

try {
  await once(ee, 'myevent');
} catch (err) {
  console.error('error happened', err);
}

以上代码来自这里

里面涉及到的基础知识点有:

  1. Promise
  2. async/await
  3. Node.js 中的微任务队列与 nexttick 队列
  4. CJS 与 MJS 的差异
  5. Node.js 中的 EventEmitter

最后,这真的不算八股,AI 当然可以解释清楚,但这么一段简单清晰的代码,你还不知所以然的话,那对着 Vibe Coding 出来的屎山,最后只能束手无策了。