gpt4 book ai didi

javascript - 当源 Observable 发出但仅使用最新值时如何切换到另一个 Observable

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:30:25 26 4
gpt4 key购买 nike

我有两个可观察对象

  • load$ 是加载事件流,在启动时或单击重新加载按钮时发出
  • selection$ 是选定列表项的流,在选择列表项时发出

我想知道是否有一个运算符可以让我 (A) 在 load$ 发出时获取 selection$ 发出的最新值,而 (B) 忽略load$ 发出的值。

我能够通过使用 withLatestFrom 完成 (A),但这不满足 (B),因为 withLatestFrom 不会忽略可观察源。

load$.withLatestFrom(selection$).subscribe(([_, latestSelection) => {
// _ is not needed and I don't like to write code like this
// I only need the latest selection
});

我查看了满足 (B) 但不满足 (A) 的 switchMapTo,但没有使用 first()take(1).

load$.switchMapTo(selection$.take(1)).subscribe(latestSelection => {
// I would like to avoid having to use take(1)
});

我正在寻找一个假设的 switchMapToLatestFrom 运算符。

load$.switchMapToLatestFrom(selection$).subscribe(latestSelection => {
// switchMapToLatestFrom doesn't exist :(
});

不幸的是,它不存在,我不喜欢我想出的其他两种方法,因为代码包含 take(1) 或未使用的参数的原因并不是很明显。

是否有任何其他方法可以组合两个可观察对象,以便新的可观察对象在第一个可观察对象发出时仅发出第二个可观察对象的最新值?

最佳答案

withLatestFrom采用传递值的可选 project 函数。

您可以使用它来忽略 load$ 的值并仅发出最新的选择:

load$
.withLatestFrom(selection$, (load, selection) => selection)
.subscribe(selection => {
// ...
});

关于javascript - 当源 Observable 发出但仅使用最新值时如何切换到另一个 Observable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45076790/

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