Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 切换可观察的流,然后逐个获取订阅_Javascript_Angular_Rxjs - Fatal编程技术网

Javascript 切换可观察的流,然后逐个获取订阅

Javascript 切换可观察的流,然后逐个获取订阅,javascript,angular,rxjs,Javascript,Angular,Rxjs,我有一个可观察到的URL,我正在将它切换到getRows(),它返回一个可观察到的URL参数从API中提取数据。我希望能够为getRows()所做的每一次发射获取订阅引用。这是为了在UI上显示加载指示器 当前代码: this.tableSource = this.urlParamService.getParameterGroup(this.parameterPrefix) .distinctUntilChanged() .map(p => this.getRows(p))

我有一个可观察到的URL,我正在
将它切换到
getRows()
,它返回一个可观察到的URL参数从API中提取数据。我希望能够为
getRows()
所做的每一次发射获取订阅引用。这是为了在UI上显示加载指示器

当前代码:

this.tableSource = this.urlParamService.getParameterGroup(this.parameterPrefix)
    .distinctUntilChanged()
    .map(p => this.getRows(p))
    .switch()
    .share();
然后当我更改了我调用的参数时:

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

但是我想在外部实体操纵URL时启用组件更新,因此我应该订阅而不是共享
tableSource
,那么每次调用
getRows()
,我如何才能获得订阅呢?

我设法用这种方法解决了这个问题:

this.urlParamService.getParameterGroup(this.parameterPrefix)
    .distinctUntilChanged()
    .do(p => {
        this.tableLoad = this.getRows(p).subscribe((r) => this.rows = this.parseRows(r));
    })
    .subscribe();
因此,我不再尝试将两个可观察序列作为一个使用(即使其中一个依赖于另一个),而只是将第二个作为第一个序列的副作用