关于angular6:在角度6中使用rxjs observables的目的是什么?

What is a purpose of using rxjs observables in angular 6? And what are the advantages of rxjs over async/await?

本问题已经有最佳答案,请猛点这里访问。

我目前正在开发一个使用Angular6作为前端框架的Web应用程序。我还将使用一些API端点从服务器获取数据。在这里我被卡住了,根据AngularDocs,它建议使用RXJS,但是在使用RXJS操作符时我有点困惑。


  • 如果在HTTP调用完成之前取消订阅,那么可以观察到cancelable—HTTP调用将中止。

  • Observable具有更好的可组合性,例如:默认情况下Promise有1个扁平化策略:promise1.then(()=>promise2),rxjs有许多:

    开关图,合并映射,浓度图,排气图,

  • 可观察到的更具表现力,它就像异步操作的lodash(有很多帮助操作员)


如果只考虑对API的HTTP调用,那么RXJS与Promise带来的好处可能就不多了。retry操作符使得在出现错误时更容易重试,使用switchMap可能更容易管理竞争条件,但总体来说没有那么多。

原因是HTTP调用是"一次性"的。您触发1个调用,1个调用只返回1个结果或错误。就像prome是"一次性"的东西一样。

RXJS真正闪光的地方是当您必须处理可能随着时间推移排放超过1次的事件流时。cloud和dom是这类流源的两个例子。在这些情况下,你可以看到RXJS是如何承诺类固醇的。

这里有几个例子:

  • Angular大学的一个关于使用可观测的

  • 关于同一主题的文章

  • 如何用RXJS制作对象动画