gpt4 book ai didi

rxjs - 提供给 combineLatest 的可观察对象的顺序是否相关?

转载 作者:行者123 更新时间:2023-12-01 15:30:01 25 4
gpt4 key购买 nike

我有两个 observable 想与 combineLatest 结合起来:

const o1 = from(['a', 'b', 'c']);
const o2 = of('content from o2');
combineLatest(o1, o2)
.subscribe(result => console.log(result));

据我了解 combineLatest ,当 任何 observable 发出,它将结合所有 observable 的最新值并发出它们:

When any observable emits a value, emit the latest value from each. (https://www.learnrxjs.io/operators/combination/combinelatest.html)



但是,使用上面的代码,输出是:
["c", "content from o2"]

所以只有当 o2发出, combineLatest发出一个值。

如果我切换顺序我交出 o1o2 ,它按预期工作:
const o1 = from(['a', 'b', 'c']);
const o2 = of('content from o2');
combineLatest(o2, o1)
.subscribe(result => console.log(result));

输出:
["content from o2", "a"]
["content from o2", "b"]
["content from o2", "c"]

这是预期的行为吗?如果是这样,为什么?这似乎与定义 ob combineLatest 相矛盾.

最佳答案

是的,在这种情况下顺序很重要,但这是一个时间问题。 combineLatest 不能影响 observables 值的发出顺序。

在您的第一种情况下, o1 在 o2 发出其值之前发出所有值。在第二种情况下,o2 首先发出它的值,然后 o1 发出它的所有值。在现实世界的例子中,你有一个可观察值(服务调用等)的自然延迟,所以通常顺序无关紧要。

关于rxjs - 提供给 combineLatest 的可观察对象的顺序是否相关?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51676725/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com