Как я могу изменить '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),

Другие вопросы по тегам