我没有看到关于做什么和最后在RxJS之间有什么区别的非常好的文档.我的目标是仅在Observable返回数据时才采取行动,但看起来他们都会对失败采取行动.
> do表示“为observable中的每个元素调用一个动作
序列并在优雅或异常时调用动作
终止可观察序列.“
observable可能返回多个元素?
>最后说“调用一个
源可观察序列终止后的指定操作
优雅地或特殊地“.
我希望有人能解释一下
重要的是使用或是否有更好的替代方法.
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返回的数据的函数.我愿意接受建议并阅读有关替代方法的材料,以实现我想要的目标.
为每个普通事件调用do(),不修改数据流.它仅用于副作用.
finally()在最后一个事件之后或在发生错误之后被调用(如果有的话).无论是成功还是失败,都会调用一次.
如果this.defineWidth()依赖于this.tableData而不是你不需要做或最后.只需在为this.tableData分配响应的行之后添加调用:
getData(choice): void { this.dataService.getTableData(choice,'mainCalls.PHP') .subscribe(tableData => { this.tableData = tableData; this.defineWidth(); }),err => { console.log(err); } ); }