Вопрос

Давайте 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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top