繁体   English   中英

在RxJS中承诺“最终”回调等价物

[英]Promise 'finally' callback equivalent in RxJS

我有一个从API获取一些数据的组件。 该组件有一个loading成员变量,用于确定是否应显示加载图标。 当数据提取完成时, loading设置为false,以隐藏加载图标。 无论是否发生错误,都应该发生这种情况。

目前,我已实现如下:

export class MyComponent implements OnInit {

  loading = true;
  data;

  constructor(private dataService: DataService) { }

  ngOnInit() {
    this.dataService.getData().subscribe(data => {
      this.data = data;
      this.loading = false;
    },
    () => {
      this.loading = false;
    });
  }

}

我想知道是否有办法消除this.loading = false的重复。 如果我使用Promises ,这就是我使用Promise.finally()回调的原因 - 但我不是。 在RxJS中是否存在等价物,或者更好的方法来实现它?

从RXJS 5.5开始,使用“finalize”运算符:

ngOnInit() {
  this.dataService.getData()
  .pipe(
    finalize(() => this.loading = false)
  )
  .subscribe(data => {
    this.data = data;
  });
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM