Max*_*ner 5 javascript rxjs angular
我有两个可观察对象:
1:累加一个值,完成。(重要提示:可能在发出任何值之前完成!)
2:执行操作直到 1 完成(不发出)
你会如何在 RxJS 中实现这个?
我的第一次尝试是使用last(),例如:
firstObservable.pipe(
takeUntil(secondObservable.pipe(last()))
).subscribe(count =>{
//do stuff with count
});
Run Code Online (Sandbox Code Playgroud)
但是当firstObservable完成而没有发出任何值时,问题就出现了。出现错误:
Error: no elements in sequence
Run Code Online (Sandbox Code Playgroud)
问题:如何使用 takeUntil (或任何其他运算符)在 observable 2 完成后停止订阅,并且在没有发出最后一个值时不抛出错误?
您可以使用 FinalizesecondOvservable并完成firstObservable那里。这样它不依赖于发出的任何值,只依赖于完整的事件。
secondOvservable.pipe(
finalize(() => firstObservable.complete())
).subscribe(count =>{
//do stuff with count
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2051 次 |
| 最近记录: |