我长期以来都喜欢JavaScript的Promises。我知道今天Promises是JavaScript语言的一部分 - 从ES6开始,但很久以前他们就已经(现在仍然)有一些不同的库来实现它们。
我最近开始参与一些Angular项目,并且我被介绍了 Observables 的概念(RxJs)。 在一些调查之后,我理解了Observables和Promises之间的基本区别:
map
,reduce
,retry
等。then
或catch
),都会触发Promise阻止。我的问题不是它们之间有什么区别,但我们是否真的需要Observables,还是只是语法糖? 由于Promises的使用是同步(按顺序设置)异步流,通过告诉一个代码块仅在代码块完成它的流程时运行。
debounce
我可以使用Lodash {{1与承诺)。当然,每个第三方库都带有额外的复杂性 - 但RxJs也是如此。 P.S
请不要阅读这个问题,并认为我有一些个人代理Observables,我只是想了解他们最闪亮的地方?在哪些情况下,如果有的话,它们优于承诺?
答案 0 :(得分:2)
我确实认为不是要求我们是否需要观察?我们应该问什么时候需要观察?有些事情你错过了差异:
Observable.just
这样的运算符是完全同步的。HttpClient::get
就是其中之一。虽然承诺急切地评估。RXJS Observables旨在提供一种简单的方法来进行功能性反应式编程,而承诺只是进行异步编程的一种方式。
基于此我可以说 Observables不仅仅是承诺的语法糖,而是一种完全不同的结构。