Ami*_*.io 15 debugging rxjs5 redux-saga redux-observable
关于RxJS - 目标我读到他们的目标是更好的可调试性:
目标
提供比以前版本的RxJS更多的可调试调用堆栈
我刚刚开始使用redux-observable,这对我来说更容易理解比较它,redux-saga因为我已经习惯了反应风格lodash和ramda(好吧,fp风格也许;).我很惊讶它还没有可能调试它.这是真的吗?如果是这样,那么我必须切换到redux-sagas或者坚持下去redux-thunk.
根据Jay Phelps的回答编辑
通过调试我的意思是:"如何observable.map(...)在浏览器中设置断点?" 随着lodash我可以设置在浏览器中的断点,它就停在那里了_.map(...).怎么做redux-observable(或rxjs)?我不想依赖于绘制大理石图和console.log().
jay*_*lps 13
当然可以调试RxJS代码.我认为,如果不是这样的话,几乎没有人会使用它可能是安全的 - Angular2也非常依赖它.
人们使用的最常见方式与调试其他JavaScript,断点(例如调试器)和console.log()的方式相同.
一些用户使用更高级的技术,如绘制依赖图或大理石图.AndréStaltz最近写了这篇文章,所以这可能是一个有用的资源.
最终,任何类型的异步编程都将更难调试.这不是redux-observable/RxJS独有的; 快速搜索将揭示对redux-saga的大量调试问题.
事实证明,redux-thunk是构建绝大多数应用程序的最佳解决方案,因为大多数应用程序都没有复杂的副作用问题,这些问题可以证明像redux-observable或redux-saga这样的东西.虽然如果你已经精通RxJS,那么使用redux-observable 并没有错.
redux-saga作为一个项目存在的时间比redux-observable更长,所以这肯定是一个主要的卖点.您将找到更多文档,示例,并且可能有更好的社区来获得支持.
计数器是你在redux-saga中学到的运算符和API几乎不像学习RxJS那样可以转移,RxJS遍布整个地方.终极版,可观察到的是超级超级超级简单的内部,它实际上只是给你供您使用RxJS一种自然的方式.因此,如果您了解RxJS(或想要),那么它非常自然.
我对大多数人的建议是,如果你不得不问你应该使用哪一个,你可能应该选择redux-saga.
(免责声明:我是redux-observable和RxJS v5的维护者之一)
import Rx, { Observable } from 'rxjs'
const arrStream$ = Observable.of(1,2,3)
.do(x=>console.log('Before',x)) // 1, 2, 3
.map(x=>x*2)
.do(x=>console.log('After',x)) // 2, 4, 6
.subscribe(value=>doThingsWith(value))
// real console output
// Before 1
// After 2
// doThingsWith(2)
// Before 2
// After 4
// doThingsWith(4)
// Before 3
// After 6
// doThingsWith(6)
Run Code Online (Sandbox Code Playgroud)
.do(debugValue=> console.log(debugValue))
| 归档时间: |
|
| 查看次数: |
3780 次 |
| 最近记录: |