在可观察订阅的开始和结束时显示和隐藏加载
Show and hide loading at the beginning and end of the observable subscription
我想在可观察订阅的开始和结束时显示和隐藏加载,但没有成功。我认为这与 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
的一个非常普遍的问题是它的所有源 Observable 都需要至少发出一个值并在 forkJoin
发出任何东西之前完成。
很难说你在 switchMap()
里面做什么以及 this.query
是什么,但是 complete
信号和 finally()
运算符只有在可观察链完成。因此,如果您在 next
回调(即 (hashtags) => { // code... }
函数)中接收到项目,并且您知道 completed
字符串从未打印过,那么源似乎从未完成,因此要么 finally()
也没有调用完整的回调。
我想在可观察订阅的开始和结束时显示和隐藏加载,但没有成功。我认为这与 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
的一个非常普遍的问题是它的所有源 Observable 都需要至少发出一个值并在 forkJoin
发出任何东西之前完成。
很难说你在 switchMap()
里面做什么以及 this.query
是什么,但是 complete
信号和 finally()
运算符只有在可观察链完成。因此,如果您在 next
回调(即 (hashtags) => { // code... }
函数)中接收到项目,并且您知道 completed
字符串从未打印过,那么源似乎从未完成,因此要么 finally()
也没有调用完整的回调。