javascript - Observable 不发出新值

标签 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 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/

相关文章:

javascript - 如何在javascript中将值返回到控制台?

javascript - konva.js - fillPatternImage 未应用

angular - ngrx 效果抛出 "dispatched an invalid action: undefined"

javascript - "rxjs observable"需要多个而 Promise 不需要多个是什么意思

javascript - Observable.Interval 的 RxJS 多重订阅

javascript - (dojo)Observable无法观察到Memory Store的变化

javascript - 如何使用 PHP 将 Canvas 另存为 PNG 图像?

javascript - 在 HTML 中使用数组命名输入字段时——如何计算数组长度?

javascript - Angular 4可观察返回[对象对象]

angular - 在 rxjs/Observables 范围内,变量名上的尾随美元符号是什么意思?