Как я могу изменить 'process.on' на события в стиле RxJS?
Как можно слушать события NodeJS с Rx?
У меня есть следующий код в моем файле JakeJS.
process.on("cmdStart", () => {
console.log("> " + command)
});
и я хочу сделать это в стиле RxJS, но я не совсем уверен, что это лучший способ сделать это.
Я прочитал документы и попробовал некоторые из примеров, которые они предоставляют на github, но я не совсем уверен, похоже, что это не работает, вот что я попробовал.
const eventEmitter: any = new EventEmitter();
const cmdStart = Rx.Observable.fromEvent(eventEmitter, "cmdStart");
const subscription = cmdStart.subscribe(function (command) {
console.log("> " + command)
});
eventEmitter.emit(command);
2 ответа
Решение
Я следовал за примерами документа RxJS ( https://github.com/Reactive-Extensions/RxJS/blob/master/doc/api/core/operators/fromevent.md)
var Rx = require('rx');
var EventEmitter = require('events').EventEmitter;
var eventEmitter = new EventEmitter();
var source = Rx.Observable.fromEvent(eventEmitter, "cmdStart");
source.subscribe(function (x) { console.log("> " + x) });
eventEmitter.emit('cmdStart', 'testdata');
Это не работает, потому что вы излучаете command
, который предположительно является телом вашего события, а не именем события. fromEvent
будет слушать только одно имя события.
Вы должны делать eventEmitter.emit('cmdStart', command)
,