我的可观察量是这样定义的:
dropDownValue$: Observable<number> = Observable.of(-1);
然后我有另一个正在订阅的observable
this.actions$.pipe(
ofAction(UpdateFormValue)
).subscribe((action: any) => {
this.dropDownValue$ = Observable.of(action.payload.value.data);
});
最后,我观察到的 dropDownValue$
,我期待从上面的 subscibe
block 中获取新值,但什么也没发生,没有收到新值。
this.dropDownValue$.subscribe((data) => {
console.log(data);
});
我做错了什么?
无论如何,有没有办法在没有 BehaviorSubject
的情况下实现我想要做的事情?或者 BehaviorSubject
是正确的选择?
最佳答案
看起来您在新操作上覆盖了 dropDownValue$
的 Observable。这意味着 dropDownValue$
的任何先前订阅者都订阅了不同的 Observable,并且他们永远不会获得值。
为 dropDownValue$
使用主题的另一种方法是将 dropDownValue$
构建为从 action$
开始的链式 Observable:
this.dropDownValue$ = this.actions$.pipe(
ofAction(UpdateFormValue),
mergeMap((action: any) => Observable.of(action.payload.value.data))
);
this.dropDownValue$.subscribe(console.log);
关于javascript - Observable 不发出新值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49971998/