rxjs。订阅方法中包含代码是一种好习惯吗?

时间:2019-03-05 11:22:44

标签: rxjs observable

我记得很久以前我找到了一个建议,避免使用subscribe方法中的任何代码,而改用管道。

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

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

推理与摇树有关。第二个选项提示更好地被优化。如今,我再也找不到该建议和相反的建议了。我遇到的许多学习资料都是在subscribe方法中添加代码而没有说明。是否仍然建议使用管道代替subscribe中的代码?

1 个答案:

答案 0 :(得分:0)

我通常避免在订阅中添加逻辑。

函数式编码的美在于您可以结合,压缩,合并和扩展您的观测值。

如果您将逻辑放在订阅中,则只会失去可移植性,并且在以后阶段更难重构。这是典型的流切片组合方案

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

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