rxjs - 为什么没有 onComplete() rxjs 运算符?

标签 rxjs

为什么 rxjs 不包含 onComplete 运算符,即允许在源可观察对象完成时执行某些操作的运算符? finalize 运算符适用于完成和错误,而我只需要对完成使用react。

是的,我知道我可以使用 subscribe() 函数的 onComplete 回调,但这是完全不同的东西。有时您只想在 rxjs 管道内完成时执行某些操作,而不是在 subscribe 调用内。

我错过了什么吗?

最佳答案

tap 运算符接受三个参数(值、错误、完成)

ons$.pipe(
    tap(null, null, () => console.log("Done")),
).subscribe() 

或者观察者,所以你可以这样做:

obs$.pipe(
    tap({ complete: () => console.log("Done") })
).subscribe()

有关更多信息,请参阅运算 rune 档:https://rxjs-dev.firebaseapp.com/api/operators/tap


我会推荐观察者语法,因为这是 Ben Lesh 过去推荐的语法,因为它更具表现力。

关于rxjs - 为什么没有 onComplete() rxjs 运算符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58957464/

相关文章:

javascript - Angular HTTP 请求延迟拦截器未按预期工作

angular - Ionic 4 native 插件地理定位给我 "Module not found: Error: Can' t 解析 'rxjs/Observable'"

angular - 如果术语不为空/空,如何只执行一个 Observable?

javascript - Angular 5 服务正在从 api 返回数据,但组件没有向我显示数据

http - RxJS 和 AngularJS HTTP - 我怎样才能做到这一点?

javascript - RXJS:第一次拖动后捕获拖动事件不起作用

error-handling - RxJS "throw new Error"与 "Observable.throw"

javascript - 带计时器的用户 session 超时

RXJS:实现队列

javascript - 在 RxJ 中使用背压进行击键