如何更改' process.on'进入基于RxJS风格的活动?

时间:2015-09-17 22:32:55

标签: node.js typescript rxjs jake

如何用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);

2 个答案:

答案 0 :(得分:1)

我已经按照RxJS doc(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');

答案 1 :(得分:1)

这是行不通的,因为你正在发出command,这可能是你事件的主体,而不是事件名称。 fromEvent只会侦听该单个事件名称。

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