gpt4 book ai didi

javascript - RXJS:如何使用 takeUntil 直到另一个 Observable 完成(并且不发出)

转载 作者:行者123 更新时间:2023-12-05 04:49:38 25 4
gpt4 key购买 nike

我有两个 Observable:

1:累加一个值完成。 (重要:可能在发出任何值之前完成!)

2: 做事直到 1 完成(不发出)

你会如何在 RxJS 中实现它?

我的第一个尝试是像这样使用 last():

firstObservable.pipe(
takeUntil(secondObservable.pipe(last()))
).subscribe(count =>{
//do stuff with count
});

但是当 firstObservable 完成而没有发出任何值时,问题就出现了。出现错误:

Error: no elements in sequence

问题:我如何使用 takeUntil(或任何其他运算符)在 observable 2 完成后停止订阅,并且在没有发出最后一个值时不抛出错误?

最佳答案

您可以在 secondOvservable 上使用 finalize 并在那里完成 firstObservable。这样它不依赖于发出的任何值,只依赖于完整的事件。

secondOvservable.pipe(
finalize(() => firstObservable.complete())
).subscribe(count =>{
//do stuff with count
});

关于javascript - RXJS:如何使用 takeUntil 直到另一个 Observable 完成(并且不发出),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67547644/

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