【问题标题】:Is there an operator or provision in RxJS to call every time a function is called?每次调用函数时,RxJS 中是否有一个运算符或规定可以调用?
【发布时间】:2015-07-31 23:32:16
【问题描述】:

我有一个函数 className.doSomething(),它返回一个 observable。我想知道这个函数被调用或订阅的时间。

className.doSomething() :callAtSubscribe("打印当前时间") :轻敲() :订阅()

需要适当的东西来代替 callAtSubscribe。

【问题讨论】:

  • 我不清楚,你想知道Observable是什么时候订阅的吗?或者什么时候调用方法?

标签: system.reactive rxjs


【解决方案1】:

您可以将方法包装在Observable.Create 中。这将允许您跟踪订阅的时间。如果随后将其包装在方法中,则可以跟踪调用该方法的时间。这将允许您查看调用该方法的时间(但可能未订阅结果)。

/**
 * Module dependencies.
 */

var Rx = require('rx');

Rx.Observable.prototype.log = function (logger, sourceName) {
    var source = this;
    logger.debug({source : sourceName, kind : 'Created'});
    return Rx.Observable.create(function(observer) {
        logger.debug({source : sourceName, kind : 'Subscribe'});

        return source.subscribe(observer);
    });
};

这是我使用的 log 方法的一个非常精简的版本。它可以进行大量修改以包括计时、值窃听、错误、完成和终止。

【讨论】:

  • 显然可以随意重命名,但我认为您实际上正在寻找的是 log 方法。
猜你喜欢
  • 1970-01-01
  • 2019-03-06
  • 2021-08-06
  • 2020-10-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-04
  • 2020-03-17
相关资源
最近更新 更多