Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/31.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_Reactjs_Rxjs_Angular2 Observables - Fatal编程技术网

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

Javascript 在可观察订阅的开始和结束时显示和隐藏加载,javascript,angular,reactjs,rxjs,angular2-observables,Javascript,Angular,Reactjs,Rxjs,Angular2 Observables,我希望在可观察订阅的开始和结束时显示和隐藏加载,但不会成功。我认为这与forkJoin或switchMap有关。以下是我尝试过的: this.query .debounceTime(400) .distinctUntilChanged() .switchMap((query) => { // code... return Observable.forkJoin(sources); }) .finally(() => console.log('com

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

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
的一个非常常见的问题是,在
forkJoin
发出任何东西之前,它的所有源观测值都需要发出至少一个值并完成


很难说您在
switchMap()
中做了什么以及这个
是什么。但是
complete
信号和
finally()
操作符只有在可观察链完成时才被调用。因此,如果您在
下一个
回调中接收项目(这是
(hashtags)=>{//code…}
函数),并且您知道
已完成的
字符串从未打印过,那么源代码似乎从未完成,因此
最终()
也不调用完整的回调。

forkJoin
的一个非常常见的问题是,它的所有源观测值都需要发出至少一个值并在
forkJoin
发出任何东西之前完成


很难说您在
switchMap()
中做了什么以及这个
是什么。但是
complete
信号和
finally()
操作符只有在可观察链完成时才被调用。因此,如果您在
下一个
回调中接收项目(这是
(hashtags)=>{//code…}
函数),并且您知道
已完成的
字符串从未打印过,那么源代码似乎从未完成,因此
最终()
也不调用完整的回调。

您使用的是什么版本的rxjs?5+?是的,我使用的是5.0.1您使用的是什么版本的rxjs?5+?是的,我使用的是5.0.1我理解它为什么不起作用,但我如何解决这个问题?这取决于我提到的问题中的哪一个。查询是实时搜索的主题,我在switchMap中进行http调用。所以这是我提到的第二个问题。您可以使用
返回Observable.forkJoin(sources).finally(…)并将所有逻辑放在那里。
forkJoin()。当您正在搜索时,但switchmap取消了上一次搜索,并在不久后执行了另一次搜索,加载无法正常工作。我理解为什么它无法正常工作,但是我怎么才能解决这个问题呢?这取决于我提到的问题中的哪一个。查询是实时搜索的主题,我在switchMap中进行http调用。所以这是我提到的第二个问题。您可以使用
返回Observable.forkJoin(sources).finally(…)并将所有逻辑放在那里。
forkJoin()。当您正在搜索时,但switchmap取消了上一次搜索,并在不久后执行另一次搜索,加载无法正常工作。