Angular 2+ 引入了 HttpClient
,它发出 HTTP 请求并将它们发送到 RxJS observable。我的问题是为什么我会选择使用 HttpClient
's API超标fetch
用于发出单个 HTTP 请求?
我熟悉 RxJS 并且我理解这张 "the four fundamental effects" 的图表.
| one | many
-------------------------------------
sync | T | Iterable<T>
async | Promise<T> | Observable<T>
Http 请求是异步的并且返回一个值。为什么那应该是一个 Observable?我理解想要将事件流组合成 HTTP 请求 流,但我不明白为什么我想使用仅包含一个 HTTP 响应 的流。当你只有一个值时,这不就像使用数组一样吗?
我错过了什么吗?一般来说,为什么要使用 Angular 的 HttpClient? fetch 有哪些不足之处?
最佳答案
这只是一个不同的 API。 Observables 有更好的方法来区分“事物如何流动”(所有运算符:map、merge、concat 等)与执行(.subscribe),这通常有助于获得更好的画面。 Plus 提供了有用的方法,用于在请求失败时取消或重试请求。
如果您需要 Promise API(使用 async/await,这也非常有用),您始终可以使用 firstValueFrom(observeable)
所以对我来说,这只是表示同一事物的两种方式,每一种都有其相对于另一种的优势,但是由于 Observable 更通用,他们使用了它 - 你可以在 Observable 和 Promise 之间来回转换,但是 Observables 带来了一些特性Promise 没有。
关于javascript - 为什么我应该使用 HttpClient 而不是 fetch?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47505072/