在可观察订阅的开始和结束时显示和隐藏加载

Show and hide loading at the beginning and end of the observable subscription

我想在可观察订阅的开始和结束时显示和隐藏加载,但没有成功。我认为这与 forkJoinswitchMap 有关。以下是我尝试过的:

this.query
  .debounceTime(400)
  .distinctUntilChanged()
  .switchMap((query) => {
    // code...
    return Observable.forkJoin(sources);
  })
  .finally(() => console.log('completed')) // never called
  .subscribe((hashtags) => {
    // code...
  }, (error) => {
    console.log(error);
  }, () => {
    console.log('completed'); // never called
  });

forkJoin 的一个非常普遍的问题是它的所有源 Observable 都需要至少发出一个值并在 forkJoin 发出任何东西之前完成。

很难说你在 switchMap() 里面做什么以及 this.query 是什么,但是 complete 信号和 finally() 运算符只有在可观察链完成。因此,如果您在 next 回调(即 (hashtags) => { // code... } 函数)中接收到项目,并且您知道 completed 字符串从未打印过,那么源似乎从未完成,因此要么 finally() 也没有调用完整的回调。