Javascript 为什么我应该使用HttpClient over fetch?
Angular 2+引入了Javascript 为什么我应该使用HttpClient over fetch?,javascript,angular,promise,rxjs,observable,Javascript,Angular,Promise,Rxjs,Observable,Angular 2+引入了HttpClient,它发出一个HTTP请求,并将它们发送到一个RxJS可观察的服务器上。我的问题是,为什么我会选择使用标准来进行单个HTTP请求 我对RxJS很熟悉,我理解这个图表 |一|多 ------------------------------------- sync | T | Iterable 异步|承诺|可观察 Http请求是异步的,返回一个值。为什么这应该是一个可观察的结果?我知道我想将事件流组合成HTTP请求流,但我不明白为什么我只想使用一个HTT
HttpClient
,它发出一个HTTP请求,并将它们发送到一个RxJS可观察的服务器上。我的问题是,为什么我会选择使用标准来进行单个HTTP请求
我对RxJS很熟悉,我理解这个图表
|一|多
-------------------------------------
sync | T | Iterable
异步|承诺|可观察
Http请求是异步的,返回一个值。为什么这应该是一个可观察的结果?我知道我想将事件流组合成HTTP请求流,但我不明白为什么我只想使用一个HTTP响应流。这不就像使用数组时只有一个值吗
我错过什么了吗?一般来说,我为什么要使用Angular的HttpClient?fetch还有什么不足之处?它只是一个不同的API。Observable有一种更好的方法来区分“事物如何流动”(所有操作符:map、merge、concat等)和执行(.subscribe),这通常有助于获得更好的图片。Plus提供了在请求失败时取消或重试请求的有用方法 如果您需要Promise API(使用async/await,这也是非常有用的),您可以始终使用
Observable.toPromise()
所以对我来说,这只是两种表达同一事物的方式,每一种都有它的优点,但由于可观察性更为普遍,他们使用的是-你可以从可观察性来回转换为承诺,但可观察性带来了Promises所没有的特性。HttpClient还为单元测试提供了模拟工具。@b我认为您的答案与操作更相关。。。因为对于我的,你可以争论使用Rx.Observable-fetch版本(如果确实存在的话)。
| one | many
-------------------------------------
sync | T | Iterable<T>
async | Promise<T> | Observable<T>