当前位置:  开发笔记 > 编程语言 > 正文

当使用RxJS observables在可观察的返回后采取行动时,'do'和'finally'之间的差异是什么?

如何解决《当使用RxJSobservables在可观察的返回后采取行动时,'do'和'finally'之间的差异是什么?》经验,为你挑选了1个好方法。

关于RxJS dofinallyRxJS 之间的差异,我没有看到很好的文档.我的目标是仅在Observable返回数据时才采取行动,但看起来他们都会对失败采取行动.

do说" 为可观察序列中的每个元素调用一个动作,并在可观察序列的优雅或异常终止时调用一个动作. "

observable可能返回多个元素?

finally说" 在源可观察序列正常或异常终止后调用指定的操作".

我希望有人会解释是否重要,或者是否有更好的替代方法.

    getData(choice): void {
        this.dataService.getTableData(choice, 'mainCalls.php')
            .do( () => this.defineWidth() )
            .subscribe(tableData => this.tableData = tableData,
                err => {
                    console.log(err);
                }
            );
    }

    ngOnInit() {
        this.getData('getTableData');
    }

defineWidth是一个依赖于Observable返回的数据的函数.我愿意接受建议并阅读有关替代方法的材料,以实现我想要的目标.



1> Günter Zöchb..:

do()为每个正常事件调用,不会修改数据流.它仅用于副作用.

finally()在最后一个事件之后或在出现错误之后调用一次.无论是成功还是失败,都会调用一次.

如果this.defineWidth()取决于this.tableData你不需要dofinally.只需在您将响应分配到的行之后添加呼叫this.tableData:

getData(choice): void {
    this.dataService.getTableData(choice, 'mainCalls.php')
        .subscribe(tableData => {
           this.tableData = tableData;
           this.defineWidth();
         }),
         err => {
           console.log(err);
         }
    );
}

推荐阅读
wangtao
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有