angular - RxJS - Shared Observables 不共享 observable 值
问题描述
请看这里
我有一个 observable 我订阅了两次,一次在正常流程中,另一个在 a 中forkJoin
,我必须pipe(share())
到 observable 并且它仍然在其中两次调用 promise,而不是调用一次并分享价值。
解决方案
您看到的行为部分由文档的以下部分解释:
[share] 返回一个多播(共享)原始 Observable 的新 Observable。只要至少有一个订阅者,这个 Observable 就会被订阅并发送数据。当所有订阅者都取消订阅后,它将取消订阅源 Observable。
只要有订阅者,订阅就会被共享。但是,在您的示例 observable usingof
中,observable 会立即发出并完成,从而导致订阅者被取消订阅。当第二次订阅发生时,没有其他订阅者,所以它再次触发承诺。
为避免这种情况,您可以使用shareReplay
“重播”先前的发射给新订阅者。
您可以通过StackBlitz看到这种行为。
推荐阅读
- chart.js - 在`onClick`期间替换Chart.js数据导致_meta错误
- java - spark SAVEASTEXTfile 需要很多时间 - 1.6.3
- android - 应用程序未通过 WiFi 连接加载数据
- javascript - 无法在网站上编辑表格中的数据库条目
- reactjs - 错误:PostCSS 插件 autoprefixer 需要 PostCSS 8。更新 PostCSS 或降级此插件
- swiftui - 如何在 IOS14 中使用多个 fullScreenCover
- python - 我想重建 django 视图
- go - 用 Go 编写的内核如何启动?
- r - 我想从现有的 csv 创建一个新的 csv,它包含多个相同的列但没有排序的数据
- localization - OctoberCMS - Rainlab 翻译