切换Observable流并逐个获取订阅

时间:2017-07-20 03:00:14

标签: javascript angular rxjs

我有一个Observable监听URL,我switch将它getRows()getRows(),它返回一个Observable,用API参数从API中提取数据。我希望能够获得this.tableSource = this.urlParamService.getParameterGroup(this.parameterPrefix) .distinctUntilChanged() .map(p => this.getRows(p)) .switch() .share(); 所做的每个发射的订阅参考。这是为了在UI上显示加载指示器。

当前代码:

this.tableLoad = this.tableSource.take(1).subscribe((r) => this.rows = this.parseRows(r));

然后我明确地改变了我一直在调用的参数:

tableSource

但是我希望在外部实体操作URL时让组件更新,所以我应该订阅而不是共享getRows(),所以每次调用{{1}}时如何获得订阅,是有可能吗?

1 个答案:

答案 0 :(得分:0)

我设法通过这种方式解决了问题:

this.urlParamService.getParameterGroup(this.parameterPrefix)
    .distinctUntilChanged()
    .do(p => {
        this.tableLoad = this.getRows(p).subscribe((r) => this.rows = this.parseRows(r));
    })
    .subscribe();

所以我停止尝试将两个Observable序列用作一个(尽管一个依赖于另一个),并且只是订阅了第二个作为第一个的副作用。