问题标签 [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.
rxjs - 是什么触发了 combineLatest?
我有一些可观察的。我需要知道是哪一个触发了订阅。
javascript - 结合 Rxjs 5 中的最新行为?
看定义_combineLatest
组合多个 Observable 以创建一个 Observable,其值是根据其每个输入 Observable 的最新值计算得出的。
或者
每当任何输入 Observable 发出一个值时,它都会使用来自所有输入的最新值计算一个公式,然后发出该公式的输出。
很清楚地看到,在每个时间段/排放量中,该排放量的结果是最新排放量的组合。
如果是这样,请查看此代码
结果是:
当我改变
至
——我明白了5a,5b,5c
问题:
文档没有指定关于调用顺序的任何区别(如果是这样 - 为什么我会得到不同的结果)?
为什么我看不到其他来源的其他组合?似乎一个来源正在获取它的最后一个值,然后才将它加入到来自 OTHER 来源的每个值中。
看起来这就是实际发生的事情:
当我交换订单时 (obs1<->obs2) :
这里发生了什么?为什么一个流必须完成才能开始加入?
为什么我看不到这样的东西(或变体):
angular - 构建使用 Firebase 的 Angular 应用程序时如何处理所有 Observables
我已经用 Angular 和 Firebase 构建了一些应用程序,我刚刚开始一个新的应用程序。我对其他人如何使用 observables 获取数据感兴趣。在我的特定应用程序中,我需要使用 observable 从 URL 获取参数,检查用户是否经过身份验证,并从 firebase 获取 2 个不同的对象。我需要先检查身份验证,然后从 URL 中获取参数,这样我才能找到 firebase 对象的位置。在过去,我刚刚完成了一组像这样的可观察订阅。
现在我必须添加参数和对 firebase 的另一个调用。我尝试过使用 rxjs 的 combineLatest,但看起来我不能使用从一个 observable 返回的数据在另一个中使用。我的问题是,有没有人在没有嵌套订阅的情况下解决了类似的问题?
下面是我的 package.json 文件
下面是我的 tsconfig
angular - combineLatest 不订阅参数 Observables,不传递数据
我有一个相当常见的用例。我正在从 FirebaseDatabase 加载一组对象,并从 Firebase Storage 附加图像。
FirebaseDatabase 根据查询返回一个 Observable。每次数据库中的数据发生变化时,Observable 都会发出一个更新的查询结果。我还通过映射到每个条目的 [Domain, ImagePromise] 元组,将来自 Storage api 的 Promise 附加到结果中的每个条目
两个问题:
- 有些国会议员没有图像。
- 由于图像不在 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
. 我尝试替换combineLatest
它imageObservables[1].map(x=>[x])
并且它完美地工作(虽然当然只返回一个值而不是数组。此外,单步执行 combineLatest 导致我进行了一些奇怪的关闭,因为在任何时候都需要关闭什么?
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
rxjs - RxJS combineAll 运算符,解释
我试图了解combineAll
操作员是如何工作的。我正在使用官方文档中的以下示例:
输出是:
试图弄清楚为什么,我做了这个简单的方案:
从文档中,我读到每次任何内部 Observable 发出一个值时,这个发出的值都会与所有其他内部 observable 的最后一个值组合。
在上面的方案中,我们可以看到内部 Observables 在一段时间内发出了 10 个值,所以我希望随着时间的推移得到 10 个值的输出,但它是 9。
此外,在输出的第一行:
'Result (1): 0' 的 0 是否对应空值?因为 Observable 'inner 2' 还没有发出任何东西?
在这里完成是我期望的输出:
这显然是错误的,但我没有发现我的错误,有人可以解释吗?
javascript - 使用 combineLatest 刷新列表:Angular2 + RxJS
我有一个组件,我在其中显示从 http 请求到 API 生成的数据表(用户)。表格上有多种过滤器,所以我生成表格数据如下:
s 是 BehaviorSubjects ,xFilter$
它们发出新值以响应模板中对其输入的更改。users$
分配如下:
WheregetList()
返回一个 http 请求以获取用户列表。
每当更改过滤器时,列表都会成功更新,但是当我需要用新用户更新列表时遇到问题。例如,用户可以对用户表执行 CRUD 操作(即删除用户)。但是,当用户被删除时,表不会更新以反映此更改。我目前用来(尝试)刷新表的方法是在删除操作的成功回调中调用刷新函数:
尽管在操作完成后调用了这个,combineLatest observable 不会再次被“触发”,并且列表数据仍然是陈旧的。有没有更好的方法来用 http 请求刷新 combineLatest 生成的数据?
angular - RxJs combineLatest 中的错误处理
我正在使用 rxJs 在我的应用程序中检索和存储数据。我有一个场景,我正在尝试使用 combineLatest 订阅多个 observables。问题是,如果某些 observables 抛出错误,我将无法订阅,因为 subscribe 函数不会触发。我尝试将 .catch(err => err) 添加到每个可观察对象的末尾,但是 combineLatest.subscribe 不起作用。
android - 手动触发 RxJava combinelatest flowable
所以我有一个场景,我想结合两个 flowables 的最新结果并用它做一些事情。
在某些情况下,我需要能够再次获得结果,并做一些与以前不同的事情。所以我可以在某处手动存储 combinelatest 的结果,然后重复使用它们,但我在想,也许有一种方法可以添加第三个 flowable,并手动触发 onNext,以便再次传播结果。这可能吗?
android - 输入自己的值来组合最新
我有这个combinelatest flowable:
基本上,我想观察这两种材料的数据库变化,并将它们结合起来向用户展示一些数据。有时,我需要使用最新的输出,并进行不同的组合(计算繁重)。这就是为什么我制作index
了combinelatest
. 这是一种有效的方法还是有更好的选择?
PS。我需要能够随时要求不同的组合(那是我没有使用 Flowable.just()),并且我想避免在 obs 链之外保存状态。