Функция createEmitter должна создать новый EventEmitter и зарегистрировать открытые и закрытые прослушиватели событий. Обратные вызовы для этих событий должны быть аргументами onOpen и onClose соответственно. Открытый и закрытый методы должны вызывать события открытия и закрытия в EventEmitter, которые они получат в качестве аргументов эмиттера. Обратные вызовы должны вызываться только один раз для каждого эмиттера.
Например, после выполнения следующего кода он должен вывести Opened! а затем Закрыто!:
let emitter = createEmitter(
() => console.log("Opened!"), () => console.log("Closed!")
);
opened(emitter);
closed(emitter);
Мой код:
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;
Выход:
Opened!
Closed!
Тестовые случаи:
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
Может ли кто-нибудь объяснить, почему неправильный ответ и исключение?