我尝试forkJoin一个自定义的Observable(rxjs 5.5.6)
import { forkJoin } from 'rxjs/observable/forkJoin';
forkJoin(
this.resources.loadRefsCatalog()
).subscribe((res) => {
// I'm never executed :(
});
目标是
public loadRefsCatalog(): Observable<any> {
console.log(1);
return new Observable((observer) => {
console.log(2);
// doing something
});
}
我在控制台日志中得到了1和2,但是我从来没有参加过forkJoin的订阅。
我尝试使用{unsubscribe(){}}和observer.complete()进行返回,但是没有任何变化。所以我被困住了,不知道为什么。
提前感谢任何想法。
//当然,我的forkJoin适用于多个查询,其他的则可观察到HTTP并且运行良好,但我自己的却无法观察到。我尝试了很多组合。
答案 0 :(得分:0)
解决方案是
public loadRefsCatalog(): Observable<any> {
return new Observable((observer) => {
this.dataProvider.loadRefsCatalog().subscribe((res) => {
this.refsCatalog = res;
observer.next(true);
observer.complete();
});
});
键是next(a_value)和complete(),但主要是forkJoin的next()。
observer.next(...whatever you want to send to forkJoin...);