我对JavaScript的承诺非常熟悉。我知道今天的承诺是JavaScript语言的一部分--从ES6开始,但是很久以前,它们存在(而且仍然是)实现它们的几个不同的库。
我最近开始从事一些角度项目,并向我介绍了可观测性的概念(由RxJ编写)。
在经历了几次入侵之后,我理解了可观察性和承诺之间的基本区别:
观测值
map
、reduce
、retry
等等。应许
then
或catch
),承诺块都会被触发。我的问题不是它们之间有什么区别,而是我们真的需要观察,还是它们只是句法上的糖?因为承诺的使用是同步(按顺序设置)异步流,方法是告诉一个代码块只在其他代码块完成它的流时才运行。
debounce
,我可以承诺使用Lodash _.debounce
)。当然,每个第三方库都有其额外的复杂性--但RxJ也是如此。P.S
请不要阅读这个问题,并认为我有一些个人代理观察,我只是想了解他们最闪亮的地方?在哪种情况下,他们比承诺更优越,如果有的话?
发布于 2018-05-24 07:04:56
我确实相信,与其问,我们是否需要可观察的东西?,我们应该问,我们什么时候需要可观察的东西?,有一些东西你忽略了,因为它们是不同的:
Observable.just
是完全同步的。HttpClient::get
就是其中之一。而承诺则急切地评估。RXJS可观察到的目标是提供一种简单的方法来完成功能反应编程,而承诺只是进行异步编程的一种方式。
基于此,我可以说,可观测值不仅仅是承诺的语法糖,而是完全不同的结构。
https://stackoverflow.com/questions/50512238
复制