在角度6中使用rxjs观测值的目的是什么?与异步/等待相比,rxjs有哪些优势?

在角度6中使用rxjs观测值的目的是什么?与异步/等待相比,rxjs有哪些优势?,rxjs,angular6,Rxjs,Angular6,我目前正在开发一个web应用程序,它使用angular 6作为前端框架。我还将使用一些api端点从服务器获取数据。在这里,我被卡住了,根据角度文档,它推荐使用RXJS,但是我在使用RXJS操作符时有点迷惑。 如果你只考虑API的HTTP调用,RXJS vs承诺带来的优势就不那么多了。retry操作符使出现错误时更容易重试,使用switchMap管理竞争条件可能更容易,但总体来说没有那么多 原因是http调用是“一次性”的。您发出一个调用,该调用只返回一个结果或错误。就像Promese是“一次性”

我目前正在开发一个web应用程序,它使用angular 6作为前端框架。我还将使用一些api端点从服务器获取数据。在这里,我被卡住了,根据角度文档,它推荐使用RXJS,但是我在使用RXJS操作符时有点迷惑。

如果你只考虑API的HTTP调用,RXJS vs承诺带来的优势就不那么多了。

retry
操作符使出现错误时更容易重试,使用
switchMap
管理竞争条件可能更容易,但总体来说没有那么多

原因是http调用是“一次性”的。您发出一个调用,该调用只返回一个结果或错误。就像Promese是“一次性”的东西一样

RxJS真正闪耀的地方是当您必须处理随时间推移可能有超过1个发射的事件流时。云和DOM是这类流源的两个示例。在这些情况下,你可以看到RxJS是如何使用类固醇的

这里有几个例子:


如果您只考虑API的HTTP调用,RXJS VS承诺带来的优势并不是很多。

retry
操作符使出现错误时更容易重试,使用
switchMap
管理竞争条件可能更容易,但总体来说没有那么多

原因是http调用是“一次性”的。您发出一个调用,该调用只返回一个结果或错误。就像Promese是“一次性”的东西一样

RxJS真正闪耀的地方是当您必须处理随时间推移可能有超过1个发射的事件流时。云和DOM是这类流源的两个示例。在这些情况下,你可以看到RxJS是如何使用类固醇的

这里有几个例子:

      • 如果我们在http调用完成之前取消订阅,则Observable是可取消的,http调用将被中止

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




        ,

      • 更具表现力的是,它类似于异步操作的Lodash(有很多有用的 操作员)

          • 如果我们在http调用完成之前取消订阅,则Observable是可取消的,http调用将被中止

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




            ,

          • 更具表现力的是,它类似于异步操作的Lodash(有很多有用的 操作员)


          HttpClient可以做的不仅仅是发出一个简单的请求,还可以流式处理进度事件等。这些都是使用承诺无法完成的事情。此外,承诺不能取消,但可观察的可以取消,允许您取消请求。如果您愿意并且不想进入反应式编程,您仍然可以将一个可观察的转换为承诺,并使用async/Wait。HttpClient可以做的不仅仅是发出一个简单的请求,可以流式处理事件等。这些是使用承诺无法完成的事情。此外,承诺不能取消,但可观察的可以取消,允许您取消请求。如果您更愿意这样做,并且不想进入反应式编程,您仍然可以将可观察的转换为承诺并使用async/Wait。