问题标签 [combinelatest]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
687 浏览

swift - Swift Combine 的 CombineLatest 不会响应其发布者之一的更新而触发

我正在结合两个发布者来确定地图视图的中心坐标应该是什么。这两家出版商是:

  1. 用户的初始位置由 a 确定(开始发送位置更新CLLocationManager后报告的第一个位置)。CLLocationManager
  2. 如果点击“当前位置的中心地图”按钮,用户的当前位置。

在代码中:

出版商$initialUserCoordinate和都centerButtonTappedPublisher发布更新 - 我已经确认了这一点。但是,coordinatePublisher只有在点击“当前位置的中心地图”按钮时才会触发组合发布者。initialUserCoordinate首次设置属性时它永远不会触发。

这个问题建议在.receive(on: RunLoop.main)之后添加一个,Publishers.CombineLatest($initialUserCoordinate, centerButtonTappedPublisher)但这对我不起作用。

我究竟做错了什么?

0 投票
1 回答
129 浏览

angular - 我怎样才能防止CombineLatest第一次触发

我有一个包含一堆字段的表单(使用reactiveForm)。当字段 A 或 B 中的值发生变化时,我想执行 doStuffWithAnB。

所以 combineLatest 似乎是我需要的。

现在如果用户进入表单,并且只触摸 B(或 A),我想执行我的功能,> 这里是 startWith

但是现在 doStuffWithAnB 从一开始就被触发,因为我的 2 个流有一个 startWith,但是我不想执行 doStuffWithAnB,直到其中一个字段被修改

我怎样才能以干净的方式实现这一目标?

0 投票
2 回答
48 浏览

firebase - combineLatest 没有被调用

我有以下代码

我是 rjxs 编程的新手,所以想知道根本原因是什么。我正在尝试执行某项任务并首先合并所有最新结果,然后订阅分配结果。但是 combineLatest 似乎不起作用。可能是什么原因?

0 投票
2 回答
3525 浏览

javascript - 如何在某些 observable 中使用 combineLatest 和过滤器?

这是一个复杂情况的简化,如果值无效,可以过滤数组中的一些可观察值。问题是过滤后的 observable 不允许另一个完成组合。什么运营商或方法可以处理这种情况,允许订阅中的有效数据日志?

stackblitz 中的示例

如果我们将值更改为 67,所有的 observables 都会显示数据。

0 投票
1 回答
26 浏览

swift - 在这种情况下使用哪个 rxSwift 运算符?

这是我的场景。我有一个主题与 combineLatest 中的另一个主题一起使用。到现在为止还挺好。现在我在其中一个主题上推送 onCompleted,但是当另一个主题推送某个事件时,CombineLatest 仍在工作。

我想要的是,一旦任一科目完成,我希望 combineLatest 停止工作。CombineLatest 是否适合在这里使用?或者有没有其他运营商可用?

0 投票
1 回答
695 浏览

angular - 在 pipe() 链中合并两个 observables

我正在使用 Rxjs,我想从以下模式(按顺序)创建一个 Observable:

  1. 从 paramMap$ 获取参数,然后...

  2. 根据 params 的值,将两者 (getData():Observable, getCategories():Observables) 放在一起,然后......

  3. from ([data, categories]) 创建最终对象。

代码如下所示:

将此代码放在 Angular 项目中的最佳位置是哪里:

  • constructor()不是最佳实践,因为这是一个长时间运行的操作(实际上它必须执行 API 请求)

  • ngOnInit()不推荐,因为在某些时候我必须更改this.params模板中使用的

在模板中:

0 投票
1 回答
308 浏览

angular - Angular combineLatest:combineLatest 中允许多少订阅?订阅数量有限制吗?

我目前正在使用最新的 7 个订阅。将主要需要使用更多。所以需要知道combineLatest中的订阅是否有任何限制。

0 投票
1 回答
405 浏览

angular - CombineLatest 无限循环采摘算子

注意:我在具有 ngFor 的组件中调用 set 函数。因此,当我调用 set 函数时,ngOnInit 会多次执行,因此 set 函数也会多次执行。 我有一个带有我更新以保持数据一致的对象的可观察对象。

我使用这种方法访问数据

当我在每个用户选择上更新这个“应用程序”时,我就会进入一个无限循环。所以 $info 开始一遍又一遍地打印相同的信息。并且“集合”被一遍又一遍地调用。我正在使用异步管道在 html 视图中订阅和取消订阅。有任何想法吗 ?

0 投票
1 回答
279 浏览

ios - 组合 combineLatest 不等待上一个操作触发

如果您在 Playgroud 中尝试此代码:

它将打印:

但我希望:

如果我删除该行,sleep(5)则它会正确打印结果。这似乎是一个异步问题。好像.combineLatest(getUsers())不是在等importUsers()我以为combineLatest是在照顾那个?我在这里缺少什么?

(在我的真实代码中有一个长时间运行的核心数据操作,而不是sleep

0 投票
2 回答
634 浏览

angular - RxJs - 结合两个 observables,结果选择器函数,zip

我正在处理一些遗留代码,并且设备状态更新错误存在问题。问题是,旧的 -遗留状态更新是使用长轮询完成的,并且它在 BE 上存在无法修复的并发问题(BE 已弃用)。有时它会忘记更新状态。消息到达但不正确。

我可以从新的 BE 中检索到请求它的正确状态(该应用程序现在是一个令人讨厌的混合体),但我无法正确地做到这一点。我的第一个想法是使用whitLatestFrom,但由于明显的原因它不起作用。

适用于应用程序重新启动/重新加载,但稍后real状态不会更新,因为没有进行新调用,它只是返回以前的值。也一样combineLatest。第一个(来自轮询)被更新,第二个只是返回以前的值。

问题是:我怎样才能以这种方式组合两个可观察对象,当第一个被更新时,我也强制更新第二个可观察对象的新值?当然,我可以同时处理它们,因为第二个 observable 只返回一个部分状态。我尝试了多个地图 ( swtichMap, concatMap, ...) 但没有成功。