Смешание событий в node.js
-
29-09-2019 - |
Вопрос
Давайте stdin.on
Например. Обратные вызовы stdin.on
Стек, так что если я напишу (в CoffeeScript)
stdin = process.openStdin()
stdin.setEncoding 'utf8'
stdin.on 'data', (input) -> console.log 'One'
stdin.on 'data', (input) -> console.log 'Two'
Затем каждый раз, когда я нажимаю возвращение по приглашению, я получаю
One
Two
У меня вопрос: есть ли способ удалить/заменить обратный вызов после связанного? Или единственный подход, чтобы связать прокси -обратный вызов и самостоятельно управлять состоянием?
Решение
Ты можешь использовать removeListener(eventType, callback)
Чтобы удалить событие, которое должно работать со всеми видами излучателей.
Пример от документов API:
var callback = function(stream) {
console.log('someone connected!');
};
server.on('connection', callback);
// ...
server.removeListener('connection', callback);
Таким образом, вам нужно иметь переменную, которая содержит ссылку на обратный вызов, потому что, очевидно, это в противном случае невозможно сказать, какой обратный вызов вы хотите удалить.
РЕДАКТИРОВАТЬ
Должен быть кто -то вроде этого в CS:
stdin = process.openStdin()
stdin.setEncoding 'utf8'
logger = (input) -> console.log 'One'
stdin.on 'data', logger
stdin.removeListener 'data', logger
stdin.on 'data', (input) -> console.log 'Two'
Видеть: http://nodejs.org/docs/latest/api/events.html#emitter.removelistener.
Другие советы
Или вы можете использовать:
stdin.once
вместо stdin.on