目标
实现最小事件发射器:emit 返回被调用的监听器数量,once 触发一次后自动移除,事件触发中被移除的监听器不破坏遍历。
要点
监听器用 Set 存储、emit 时复制快照遍历,中途退订安全;demo 打印 hello world 与 listeners=1 fired=1。
提示
没有通配符、命名空间与最大监听器保护——刻意保持最小。
验证
node –test 四个用例含 once 语义与触发中移除;demo 单监听器单次触发。 复现命令:
node --test emitter.test.mjs
node emitter.mjs
预期输出要点:The demo emits a greeting event twice, prints the listener payload each time, and reports the remaining listener count.
实测证据:Node 22.23.2: node –test -> 4 passed; demo printed hello world and listeners=1 fired=1 for a single registered listener.