rxjs。在订阅方法中添加代码是一个好的做法吗?

标签 rxjs observable

我记得曾经有一次,我发现了一个建议,即避免使用 subscribe 方法中的任何代码,而改用管道。

// suppose bad
observable.subscribe(() => dosmg())

// suppose good
observable
    .pipe(tap(() => dosmg()))
    .subscribe()

原因与树摇动有关。第二个选项提示可以更好地优化。现在我再也找不到这个推荐以及相反的推荐了。而且我遇到的很多学习资料都是在subscribe方法中添加代码,而没有任何解释。是否仍然建议使用管道来代替 subscribe 中的代码?

最佳答案

我通常避免将逻辑放入订阅中。

函数式编码的美妙之处在于您可以组合、压缩、合并和扩展您的可观察值。

如果你把逻辑放在订阅中,它只会失去可移植性,并且在后期更难重构。这是一个典型的流切片合并场景

const stream1=observable
    .pipe(tap(() => dosmg()))

const stream1WithLoggin=stream1.pipe(tap(message=>console.log(message))
const stream1WithHttp=stream1.pipe(mergeMap(message=>fetch(someurl))

关于rxjs。在订阅方法中添加代码是一个好的做法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55001680/

相关文章:

angular - 如何识别非常小的 Angular 应用程序中的内存泄漏

rxjs - 如果项目数少于缓冲区计数,则如何在发出时获得与 bufferCount 类似的行为

angular - 如何使用我的第一个自定义运算符正确扩展 rxjs/Observable

java - 可观察,从列表中访问输入

Angular forkJoin 订阅未触发

angular - 未完成的可观察对象的 forkJoin 替代方案?

RxJS 主题一次性事件

angular - 如何使异步数据可观察?

rxjs - Redux Observable 史诗中的 IF

javascript - 数组和可观察数组有什么区别?