问题标签 [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 投票
6 回答
4873 浏览

rxjs - 是什么触发了 combineLatest?

我有一些可观察的。我需要知道是哪一个触发了订阅。

0 投票
1 回答
553 浏览

javascript - 结合 Rxjs 5 中的最新行为?

定义_combineLatest

组合多个 Observable 以创建一个 Observable,其值是根据其每个输入 Observable 的最新值计算得出的。

或者

每当任何输入 Observable 发出一个值时,它都会使用来自所有输入的最新值计算一个公式,然后发出该公式的输出。

在此处输入图像描述

很清楚地看到,在每个时间段/排放量中,该排放量的结果是最新排放量的组合。

如果是这样,请查看此代码

结果是:

当我改变

——我明白了5a,5b,5c

问题:

文档没有指定关于调用顺序的任何区别(如果是这样 - 为什么我会得到不同的结果)?

为什么我看不到其他来源的其他组合?似乎一个来源正在获取它的最后一个值,然后才将它加入到来自 OTHER 来源的每个值中。

看起来这就是实际发生的事情:

当我交换订单时 (obs1<->obs2) :

这里发生了什么?为什么一个流必须完成才能开始加入?

为什么我看不到这样的东西(或变体):

JSBIN

0 投票
1 回答
210 浏览

angular - 构建使用 Firebase 的 Angular 应用程序时如何处理所有 Observables

我已经用 Angular 和 Firebase 构建了一些应用程序,我刚刚开始一个新的应用程序。我对其他人如何使用 observables 获取数据感兴趣。在我的特定应用程序中,我需要使用 observable 从 URL 获取参数,检查用户是否经过身份验证,并从 firebase 获取 2 个不同的对象。我需要先检查身份验证,然后从 URL 中获取参数,这样我才能找到 firebase 对象的位置。在过去,我刚刚完成了一组像这样的可观察订阅。

现在我必须添加参数和对 firebase 的另一个调用。我尝试过使用 rxjs 的 combineLatest,但看起来我不能使用从一个 observable 返回的数据在另一个中使用。我的问题是,有没有人在没有嵌套订阅的情况下解决了类似的问题?

下面是我的 package.json 文件

下面是我的 tsconfig

0 投票
1 回答
862 浏览

angular - combineLatest 不订阅参数 Observables,不传递数据

我有一个相当常见的用例。我正在从 FirebaseDatabase 加载一组对象,并从 Firebase Storage 附加图像。

FirebaseDatabase 根据查询返回一个 Observable。每次数据库中的数据发生变化时,Observable 都会发出一个更新的查询结果。我还通过映射到每个条目的 [Domain, ImagePromise] 元组,将来自 Storage api 的 Promise 附加到结果中的每个条目

两个问题:

  1. 有些国会议员没有图像。
  2. 由于图像不在 firedb 中,因此 observable 不会在图像更改时发出。为了解决这个问题,我添加了一个云功能来在每次图像更新时发送推送通知(在这个问题的范围之外,它可以工作,所以不需要深入探讨)。每个 mp 都是它自己的 PubSub 主题,我们在客户端订阅该主题,并获得一个更新的 Observable,每次上传特定 mp 的图像时都会发出

我通过映射解决它们

mpSvc.signUpForPictureUpdates返回 domainId-imageSrc 元组的 Observable,每次重新上传域的图像时都会发出

现在的最终目标是拥有一个 [Domain, imageSrc] 数组的 Observable,每当任何一个 Domain 对象更改,或任何 Domain 对象更改,或查询结果更改时,它都会发出.

首先我再次重新映射,而不是发出 [Domain,Observable] 对的数组,而是发出 Observable<[Domain, imageSrc]> 的数组

现在我有一组 Observable 对的 Observable。每次域或查询结果发生变化时,父 Observable 都会发出,每次特定域的图像发生变化时,子级都会发出。

最后一步,我将子 observable 组合成一个 observable 并 switchMap 到它。

结果被正确订阅(实际上,它通过 ngFor|async 显示在 Angular 模板中,但这也在范围之外)。

不幸的是,结果并非预期的那样。实际上,我有四个来自查询的结果对象,两个带有图像,两个没有。我看到的并不一致——有时两个图像都加载,有时一个,而且大多数情况下都没有。

具体来说,如果我要在末尾添加一条日志记录行,如下所示:

我总是在 imageSrc 中得到至少一个带有空值的日志行,但几乎没有额外的行带有已解析的真实 imageSrcs。

在最后一步之前订阅(combineLatest)正确获取所有数据

我究竟做错了什么?

编辑:在对此进行更多研究之后,问题肯定出在combineLatest. 我尝试替换combineLatestimageObservables[1].map(x=>[x])并且它完美地工作(虽然当然只返回一个值而不是数组。此外,单步执行 combineLatest 导致我进行了一些奇怪的关闭,因为在任何时候都需要关闭什么?

0 投票
1 回答
31 浏览

pandas - 合并部分值

我有一个这样的数据框:

我将使用这些值的一部分进行计算并将它们放回列中。

可悲的是 .combine 在这种情况下不起作用,还有其他方法吗?

这是计算

auswahl["Gas_1"] = auswahl["Gas"]

auswahl["Gas_1"] = (auswahl["Gas_1"] - auswahl["Gas_1"].shift()).fillna(0)

auswahl["Gas_1"] = auswahl["Gas_1"] * 2400

0 投票
1 回答
11274 浏览

rxjs - RxJS combineAll 运算符,解释

我试图了解combineAll操作员是如何工作的。我正在使用官方文档中的以下示例:

输出是:

试图弄清楚为什么,我做了这个简单的方案:

combineAll 方案

从文档中,我读到每次任何内部 Observable 发出一个值时,这个发出的值都会与所有其他内部 observable 的最后一个值组合。

在上面的方案中,我们可以看到内部 Observables 在一段时间内发出了 10 个值,所以我希望随着时间的推移得到 10 个值的输出,但它是 9。

此外,在输出的第一行:

'Result (1): 0' 的 0 是否对应空值?因为 Observable 'inner 2' 还没有发出任何东西?

在这里完成是我期望的输出:

这显然是错误的,但我没有发现我的错误,有人可以解释吗?

0 投票
2 回答
1464 浏览

javascript - 使用 combineLatest 刷新列表:Angular2 + RxJS

我有一个组件,我在其中显示从 http 请求到 API 生成的数据表(用户)。表格上有多种过滤器,所以我生成表格数据如下:

s 是 BehaviorSubjects ,xFilter$它们发出新值以响应模板中对其输入的更改。users$分配如下:

WheregetList()返回一个 http 请求以获取用户列表。

每当更改过滤器时,列表都会成功更新,但是当我需要用新用户更新列表时遇到问题。例如,用户可以对用户表执行 CRUD 操作(即删除用户)。但是,当用户被删除时,表不会更新以反映此更改。我目前用来(尝试)刷新表的方法是在删除操作的成功回调中调用刷新函数:

尽管在操作完成后调用了这个,combineLatest observable 不会再次被“触发”,并且列表数据仍然是陈旧的。有没有更好的方法来用 http 请求刷新 combineLatest 生成的数据?

0 投票
1 回答
1759 浏览

angular - RxJs combineLatest 中的错误处理

我正在使用 rxJs 在我的应用程序中检索和存储数据。我有一个场景,我正在尝试使用 combineLatest 订阅多个 observables。问题是,如果某些 observables 抛出错误,我将无法订阅,因为 subscribe 函数不会触发。我尝试将 .catch(err => err) 添加到每个可观察对象的末尾,但是 combineLatest.subscribe 不起作用。

0 投票
1 回答
764 浏览

android - 手动触发 RxJava combinelatest flowable

所以我有一个场景,我想结合两个 flowables 的最新结果并用它做一些事情。

在某些情况下,我需要能够再次获得结果,并做一些与以前不同的事情。所以我可以在某处手动存储 combinelatest 的结果,然后重复使用它们,但我在想,也许有一种方法可以添加第三个 flowable,并手动触发 onNext,以便再次传播结果。这可能吗?

0 投票
0 回答
79 浏览

android - 输入自己的值来组合最新

我有这个combinelatest flowable:

基本上,我想观察这两种材料的数据库变化,并将它们结合起来向用户展示一些数据。有时,我需要使用最新的输出,并进行不同的组合(计算繁重)。这就是为什么我制作indexcombinelatest. 这是一种有效的方法还是有更好的选择?

PS。我需要能够随时要求不同的组合(那是我没有使用 Flowable.just()),并且我想避免在 obs 链之外保存状态。