可观察与回调 [重复]

Posted

技术标签:

【中文标题】可观察与回调 [重复]【英文标题】:Observable Versus Callback [duplicate] 【发布时间】:2017-12-28 02:55:33 【问题描述】:

我已经做 javascript 一段时间了。然而,我对 Angular 2 还很陌生,所以我对 Observables 几乎一无所知。当我阅读 Observables 的描述时,它们听起来很像我已经知道的回调。当我问谷歌时,有回调和承诺之间的比较,还有承诺和可观察对象之间的比较。但是,我找不到回调和 Observables 之间的任何比较。

回调和可观察对象有什么区别?

【问题讨论】:

你需要重新研究一下callbacks和promises之间的区别,那么这个问题就会过时了。您可以比较 promise 和 observables,但回调是不同的概念。你注册回调到 promises、observables 或任何你想要的东西。 回调,即。能够传递函数引用,是实现 Promise 和 observables 的关键概念。所以这不是回调与可观察对象,而是回调和可观察对象 【参考方案1】:

正如this thread 中所讨论的,Observables 和 Promises 之间的主要区别在于 Promises 处理可以解决或失败的一次性异步事件,而 Observables 通过附加到异步流数据或事件源的各种操作启用可组合流.最后,为了将 Observable 或 Promise 的结果传递回同步代码,您将需要一个回调来作为数据接收器操作,因此两者不是互斥的。话虽如此,Observables 和 Promises 一样,允许使用可组合函数的语法糖以声明方式定义异步数据流上的操作。在 Observables 的情况下,您可以使用 single 回调作为接收器将结果传递回同步代码,而不必嵌套函数调用和/或执行递归函数调用,就像在使用纯回调组合异步操作。

【讨论】:

以上是关于可观察与回调 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

回调函数与观察者模式(上)

断开 Mutation Observer 与回调函数的连接

观察者面向对象的设计模式只是实现回调的一种形式吗?

ES6回调的默认值参数[重复]

Nodejs - 正常回调与 exec [重复]

异步 JavaScript - 回调与延迟/承诺 [重复]