RxJS:forkJoin与BehaviorSubject

使用forkJoin多个Subject时没有注意看教学文件碰到的坑。

教学文件说的很清楚,forkJoin():

When all observables complete, emit the last emitted value from each.

只有当被forkJoin的所有对象都complete的时候,才会emit各自的最后一个value。

在做共用元件的时候,因为元件内有非同步的资料处理,

因此共用元件设计了一个检查非同步方法是否做完的method让使用共用元件的页面元件呼叫,情境如下:

如果共用元件内的非同步方法已经做完,就return一个of(undefined)的observable;

如果共用元件内的非同步方法已经做完,就return元件内一个private subject.asObservable(),做完时会呼叫subject.next()。

开发过程中,

因为页面元件中使用到两个共用元件,所以将两个共用元件检查method回传的observable给forkJoin起来,

却发现永远不会进入subscribe()中success的callback,

原因就是出在共用元件的subject我只呼叫了next(),没有呼叫complete()。

不呼叫complete()的原因,原本是希望这个subject能够被重复使用,不用每次检查都用一个新的instance。

不过既然可能被用在forkJoin()中,还是需要complete()之后再重新建立一个instance供下次检查才行。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值