首页 > 解决方案 > RxJS - Shared Observables 不共享 observable 值

问题描述

请看这里
我有一个 observable 我订阅了两次,一次在正常流程中,另一个在 a 中forkJoin,我必须pipe(share())到 observable 并且它仍然在其中两次调用 promise,而不是调用一次并分享价值。

标签: angularrxjsobservable

解决方案


您看到的行为部分由文档的以下部分解释:

[share] 返回一个多播(共享)原始 Observable 的新 Observable。只要至少有一个订阅者,这个 Observable 就会被订阅并发送数据。当所有订阅者都取消订阅后,它将取消订阅源 Observable。

只要有订阅者,订阅就会被共享。但是,在您的示例 observable usingof中,observable 会立即发出并完成,从而导致订阅者被取消订阅。当第二次订阅发生时,没有其他订阅者,所以它再次触发承诺。

为避免这种情况,您可以使用shareReplay“重播”先前的发射给新订阅者。

您可以通过StackBlitz看到这种行为。


推荐阅读