1

如何使用 Rx 监听 NodeJS 事件?

我的 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);
4

2 回答 2

1

我遵循了 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');
于 2015-09-18T02:20:29.270 回答
1

它不起作用,因为您正在发出command,这可能是您的事件的主体,而不是事件名称。将fromEvent仅侦听该单个事件名称。

你应该这样做eventEmitter.emit('cmdStart', command)

于 2015-09-18T04:33:52.373 回答