Closed. This question is opinion-based。它当前不接受答案。
想要改善这个问题吗?更新问题,以便editing this post用事实和引用来回答。
2年前关闭。
Improve this question
我很熟悉JavaScript的Promises。我知道今天的Promises是JavaScript语言的一部分-从ES6开始,但是很久以前,那里(现在仍然)有一些实现它们的不同库。
我最近开始从事一些Angular项目,并向我介绍了Observables的概念(由RxJs进行了介绍)。
经过一番调查后,我了解了Observable和Promise之间的基本区别:
可观察的
传递0到N个事件。每个事件都可以调用回调。 可观察到的是可取消的 它们是很多不同的方法(由RxJs团队实现),可以帮助我读取和解析数据,例如: 只有有人订阅了 Observables块(否则将不发生任何事情),才会触发
promise
处理一个单个事件,该事件将调用成功回调或失败回调。 ES6 promise 不可取消(至少现在是这样)。但是,不同的自由主义者已经实现了可撤销的 promise ,例如BlueBird。 无论有人是否订阅(使用 Promises块都会被触发。
我的问题不是它们之间有什么区别,但是我们是否实际需要Observables,或者它们仅仅是语法糖?
由于Promises的使用是为了同步(按顺序设置)异步流,因此通过告诉一个代码块仅在另一个代码块完成后才运行,才可以运行它。
我们是否真的关心处理乘法事件,因为几乎总是我们想对某些流的成功或失败使用react(例如服务器请求)。 用于处理Observable的RxJs方法(帮助函数)很酷,但并不真正相关,因为您可以针对该行为使用第三方库(例如,代替使用RxJs 仅在订阅后才触发Observables-这并不是很重要-如果没有人在听(订阅)它们,为什么我们要有一个Observable呢?
聚苯乙烯
请不要阅读此问题,以为我有个人代理人可观察的东西,我只是想了解他们最 Shiny 的地方?在某些情况下,如果有的话,它们要比Promises优越? 可观察对象并不总是异步的,像 有热的和冷的可观察对象,这意味着一些可观察对象只有在您订阅它们后才开始发出,
RXJS Observables旨在提供一种简单的方法来进行函数式响应式(Reactive)编程,而promises只是一种进行异步编程的方法。
基于此,我可以说 Observables不仅是 promise 的语法糖,而且是一个完全不同的结构。
想要改善这个问题吗?更新问题,以便editing this post用事实和引用来回答。
2年前关闭。
Improve this question
我很熟悉JavaScript的Promises。我知道今天的Promises是JavaScript语言的一部分-从ES6开始,但是很久以前,那里(现在仍然)有一些实现它们的不同库。
我最近开始从事一些Angular项目,并向我介绍了Observables的概念(由RxJs进行了介绍)。
经过一番调查后,我了解了Observable和Promise之间的基本区别:
可观察的
map
,reduce
,retry
等。 promise
then
或catch
),我的问题不是它们之间有什么区别,但是我们是否实际需要Observables,或者它们仅仅是语法糖?
由于Promises的使用是为了同步(按顺序设置)异步流,因此通过告诉一个代码块仅在另一个代码块完成后才运行,才可以运行它。
debounce
,我可以将Lodash _.debounce
与Promise一起使用)。当然,每个第3方库都具有额外的复杂性-RxJ也是如此。 聚苯乙烯
请不要阅读此问题,以为我有个人代理人可观察的东西,我只是想了解他们最 Shiny 的地方?在某些情况下,如果有的话,它们要比Promises优越?
最佳答案
我确实相信,除了询问之外,我们还需要可观察的东西吗? ,我们应该在什么时候需要obtable询问? 您会错过一些与众不同之处:
Observable.just
这样的运算符是完全同步的。 HttpClient::get
是其中之一。虽然 promise 很热心。 RXJS Observables旨在提供一种简单的方法来进行函数式响应式(Reactive)编程,而promises只是一种进行异步编程的方法。
基于此,我可以说 Observables不仅是 promise 的语法糖,而且是一个完全不同的结构。
10-06 11:35