Naf*_*Joy 1 javascript events node.js eventemitter ecmascript-6
createEmitter 函数应该创建一个新的 EventEmitter 并注册“打开”和“关闭”事件侦听器。这些事件的回调应该分别是 onOpen 和 onClose 参数。opens 和 close 方法应该在 EventEmitter 上引发“open”和“close”事件,它们将作为发射器参数接收。每个发射器只能调用一次回调。
例如,执行以下代码后,应该打印“Opened!” 然后“关闭!”:
let emitter = createEmitter(
() => console.log("Opened!"), () => console.log("Closed!")
);
opened(emitter);
closed(emitter);
Run Code Online (Sandbox Code Playgroud)
我的代码:
const events = require("events");
const myEmitter = new events.EventEmitter();
function createEmitter(onOpen, onClose) {
myEmitter.on('open', onOpen);
myEmitter.on('close', onClose);
}
function opened(emitter) {
myEmitter.emit('open', emitter);
}
function closed(emitter) {
myEmitter.emit('close', emitter);
}
let emitter = createEmitter(
() => console.log("Opened!"), () => console.log("Closed!")
);
opened(emitter);
closed(emitter);
module.exports.createEmitter = createEmitter;
module.exports.opened = opened;
module.exports.closed = closed;
Run Code Online (Sandbox Code Playgroud)
输出:
Opened!
Closed!
Run Code Online (Sandbox Code Playgroud)
测试用例:
OK: Example case: Correct answer
WRONG: createEmitter registers the correct events: Exception
OK: open and close functions raise the correct events: Correct answer
WRONG: Callbacks are only invoked once: Wrong answer
Run Code Online (Sandbox Code Playgroud)
任何人都可以解释为什么错误答案和例外吗?