Rxjs RX-JS 5-使用;“电梯”;记录可观察数据以进行调试

Rxjs RX-JS 5-使用;“电梯”;记录可观察数据以进行调试,rxjs,rxjs5,Rxjs,Rxjs5,我是RX-JS新手,希望记录数据以进行调试。 最后,我需要的是记录代码中定义的每个可观察对象以及这些可观察对象发生的所有事件/数据发射 对于RX-JS,如果我覆盖提升,则可以向操作员链中的所有观察者注入行为, 但如何记录尚未应用于任何操作员的RX观测值? 记录所有观测值是否合适,以覆盖提升并订阅记录数据的每个观测值, 因为操作员没有工作 这就是我努力的方式 const _lift = Rx.Observable.prototype.lift; var idCounter = 0; Rx.Obse

我是RX-JS新手,希望记录数据以进行调试。 最后,我需要的是记录代码中定义的每个可观察对象以及这些可观察对象发生的所有事件/数据发射

对于RX-JS,如果我覆盖提升,则可以向操作员链中的所有观察者注入行为, 但如何记录尚未应用于任何操作员的RX观测值?

记录所有观测值是否合适,以覆盖提升并订阅记录数据的每个观测值, 因为操作员没有工作

这就是我努力的方式

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);
提前谢谢


最诚挚的问候

我明白你想做什么,但你做的方式有点奇怪。我不知道你是否听说过接线员的事。让接线员来吧。 如果您这样做:

const subscribe = source
  .map(val => val + 1)
  .let(obs => {
     // do stuff with the observable here and return it afterwards
     // to not break the chain
     return obs;
  });

  .subscribe(val => console.log(val));
Let将使您能够完全访问可观察对象,而不仅仅是其中的值。你可以用它做你想做的事。您需要在let函数中返回一个可观测值,但如果您只是想做什么,然后返回原始值。我想你不会打破锁链,你可以做你想做的事


更多信息请点击这里:

我知道你想做什么,但是你做的方式有点奇怪。我不知道你是否听说过接线员的事。让接线员来吧。 如果您这样做:

const subscribe = source
  .map(val => val + 1)
  .let(obs => {
     // do stuff with the observable here and return it afterwards
     // to not break the chain
     return obs;
  });

  .subscribe(val => console.log(val));
Let将使您能够完全访问可观察对象,而不仅仅是其中的值。你可以用它做你想做的事。您需要在let函数中返回一个可观测值,但如果您只是想做什么,然后返回原始值。我想你不会打破锁链,你可以做你想做的事


更多信息请点击此处:

谢谢回复。我想调试任何RX-JS代码,而不修改代码本身。这就是为什么要寻找一些RX-JS接口/覆盖RX-JS的一部分来嗅探/记录每个事件。我希望现在更清楚了?我正在尝试开发类似的东西谢谢你的回复。我想调试任何RX-JS代码,而不修改代码本身。这就是为什么要寻找一些RX-JS接口/覆盖RX-JS的一部分来嗅探/记录每个事件。我希望现在更清楚了?我正在尝试开发类似的东西