const emitter = new EventEmitter();
function listener1() {
console.log("listener1: сработал и отписался");
emitter.off("event", listener1); // отписка прямо во время emit
}
function listener2() {
console.log("listener2: сработал");
}
emitter.on("event", listener1);
emitter.on("event", listener2);
Мы сейчас перебираем варианты решения абстрактной задачи с какого-то конкретного собеседования, в поисках того решения, который понравится конкретно вам, правильно я понимаю? :)
Опять же - вы ведь можете написать свой вариант с идеальным (на ваш взгляд решением), это будет очень круто, я с удовольствием ознакомлюсь, наверное даже научусь чему-то новому!
А то получится в итоге, "что выросло, то выросло".
Ну так... Да.. Это же просто описание моего опыта решения конкретной задачи на конкретном собеседовании, статья ведь кажется не называется "Я написал лучший EventEmitter", или "Научу писать лучший EventEmitter"? Вроде нет. Возможно мы по разному понимаем цель её написания - я просто поделился опытом, и не стремился научить кого-то работать по best practices, или моему пониманию прекрасного. Вы нашли какие-то недостатки? Супер, спасибо что поделились! Я согласен, что код не идеален, оно как бы изначально и не подразумевалось как пример идеального решения :)
В текущей реализации - конечно будет переполнение. Теоретически наверное можно было бы пофиксить например дополнительным условием с переменной inProgress с выходом если он true. Но вообще в некоторых реальных EventEmitter такие кейсы просто перекладываются под ответственность разработчика, могу ошибаться, но насколько помню - EventEmitter в Node.js не имеет защиты от такого
Вот кому может понадобиться дважды подписать одну функцию?
Вообще это просто условие задачи, которое дали на конкретном собеседовании. Но от себя навскидку могу предположить такие кейсы: 1) если в дальнейшем планируется расширение функционала с возможностью задания дополнительных флагов объекту listener (once/priority и тд) - может возникнуть необходимость хранения таких разных listener с одной и той же функцией 2) возможность передать разные варианты контекста, вроде такого:
Зачем она нужна?
Спасибо, учту на будущее!
Да, я не упомянул этого, но ситуация именно что с IT рекрутингом)
Таково было условие от интервьюера
Да, вполне можно пробнуть, надо ознакомиться, спасибо за рекомендацию!
Мы сейчас перебираем варианты решения абстрактной задачи с какого-то конкретного собеседования, в поисках того решения, который понравится конкретно вам, правильно я понимаю? :)
Думаю, что вопросы релевантны, согласен с ними, но задача была поставлена таким образом и на тот момент я просто "работал с чем дали" :)
Опять же - вы ведь можете написать свой вариант с идеальным (на ваш взгляд решением), это будет очень круто, я с удовольствием ознакомлюсь, наверное даже научусь чему-то новому!
Ну так... Да.. Это же просто описание моего опыта решения конкретной задачи на конкретном собеседовании, статья ведь кажется не называется "Я написал лучший EventEmitter", или "Научу писать лучший EventEmitter"? Вроде нет.
Возможно мы по разному понимаем цель её написания - я просто поделился опытом, и не стремился научить кого-то работать по best practices, или моему пониманию прекрасного.
Вы нашли какие-то недостатки? Супер, спасибо что поделились! Я согласен, что код не идеален, оно как бы изначально и не подразумевалось как пример идеального решения :)
В текущей реализации - конечно будет переполнение.
Теоретически наверное можно было бы пофиксить например дополнительным условием с переменной inProgress с выходом если он true.
Но вообще в некоторых реальных EventEmitter такие кейсы просто перекладываются под ответственность разработчика, могу ошибаться, но насколько помню - EventEmitter в Node.js не имеет защиты от такого
Вообще это просто условие задачи, которое дали на конкретном собеседовании.
Но от себя навскидку могу предположить такие кейсы:
1) если в дальнейшем планируется расширение функционала с возможностью задания дополнительных флагов объекту listener (once/priority и тд) - может возникнуть необходимость хранения таких разных listener с одной и той же функцией
2) возможность передать разные варианты контекста, вроде такого:
Конечно возможно удобнее выбрасывать ошибку, но потенциально в реальной жизни это может зависеть от конкретных целей.
по второму вопросу не понял, раскрой пожалуйста подробнее