Observable不会发出新值

时间:2018-04-23 00:34:14

标签: javascript rxjs observable

我的观察结果与此类似:

 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区块获得新值,但是没有任何事情发生,没有新的价值被收到。

this.dropDownValue$.subscribe((data) => {
  console.log(data);
});

我做错了什么? 反正有没有BehaviorSubject实现我想做的事情?或者BehaviorSubject是要走的路?

1 个答案:

答案 0 :(得分:1)

您似乎在新操作上覆盖了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);