我想在可观察订阅的开头和结尾显示和隐藏加载,但没有成功。我认为这与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
});
答案 0 :(得分:0)
forkJoin
的一个非常常见的问题是它的所有源Observable都需要发出至少一个值并在forkJoin
发出任何内容之前完成。
很难说你在switchMap()
内做了什么以及this.query
是什么,但complete
信号和finally()
运营商都是仅在Observable链完成时调用。因此,如果您正在接收next
回调中的项目(即(hashtags) => { // code... }
功能),并且您知道永远不会打印completed
字符串,那么它似乎就是源代码永远不会完成,因此调用finally()
或完整的回调。