【发布时间】:2020-03-29 12:49:06
【问题描述】:
这是测试,在任何角度组件的 ngInit 中:
console.log('a');
observableFoo$.subscribe(x => console.log('b'));
observableNotFoo$.subscribe(() => console.log('c'));
forkJoin([
observableFoo$,
observableNotFoo$
]).subscribe(([foo, ntFoo]) => {
console.log('d');
});
ObservableFoo$ 将触发 2 次,这是我需要的行为,这个 observable 将观察到一个在初始化期间可以快速变化的值。
结果是:
a
b
b
c
而且 d 从不登录。 所以,我首先尝试做同样的事情,但只使用 ObservableNotFoo$ 只是为了确保我可以在单个 Observable 上 forkJoin(没用但它有效),然后我尝试使用 ObservableFoo$ 做同样的事情,但它不起作用。
似乎 forkJoin 只是不接受会触发两次的订阅。是这样吗?好像真的很奇怪……
** 编辑:**
observableFoo$ = initFoo(this.id);
observableNotFoo$ = of('notFoo');
initFoo(id: string): Observable<any> {
const content = this.store.select({
filterBy: entity => entity.id === id
}).pipe(
flatMap(v => {
const value = v[0];
if (!value) {
return httpRequest.get(this.baseUrl + '/' + id).pipe(map(val => {
this.store.add(val);
return val;
}));
}
return of(value);
})
);
return content;
}
}
【问题讨论】:
-
你能发布两个 observables 的真正含义吗?
-
完成,我删除了一些抽象级别以使其更清晰。简单来说,我有一个 store,如果不初始化,很快就会触发,所以事件会触发两次
标签: angular typescript rxjs rxjs-observables