【发布时间】:2016-11-18 11:11:19
【问题描述】:
我是 RX-JS 的新手,并且想记录数据以进行调试。 最后,我需要记录在一段代码中定义的每个可观察对象以及从这些可观察对象中发生的所有事件/数据发射。
对于 RX-JS 如果我覆盖 lift ,就可以将行为注入到操作者链中的所有观察者中, 但是我如何记录那些尚未应用于任何操作员的 RX-Observables 呢?。
记录所有可观察对象以覆盖 lift 并订阅每个可观察对象以记录数据是否是正确的方法, 因为 do 运算符不起作用。
这就是我的尝试
const _lift = Rx.Observable.prototype.lift;
var idCounter = 0;
Rx.Observable.prototype.lift = function (operator) {
var sourceObs = this ;
sourceObs.id = ++idCounter;
var resultantObservable = _lift.call(sourceObs, operator);
resultantObservable.id = ++idCounter;
// In this Method i log data
LogObserver(operator , sourceObs , resultantObservable);
return resultantObservable;
};
以上代码适用于
var timer = Rx.Observable.interval(1000).take(4);
但不适用于
var sequence = Rx.Observable.range(1, 10);
提前致谢。
最好的问候
【问题讨论】: