为什么我应该在获取时使用HttpClient?

里科·卡勒(Rico Kahler)

Angular 2+引入HttpClient了发出HTTP请求并将其发送到可观察到的RxJS的功能。我的问题是,为什么我会选择在标准上使用HttpClient的APIfetch来发出单个HTTP请求?

我熟悉RxJS,并且了解这张“四个基本效果”图表

       | one        | many
-------------------------------------
sync   |  T         | Iterable<T>
async  | Promise<T> | Observable<T>

Http请求是异步的,并返回一个值。为什么那应该是可观察的?我知道要将事件流组合成HTTP请求流,但是我不明白为什么我只想使用一个HTTP响应当您只有一个值时,这不就是使用数组吗?

我想念什么吗?通常,为什么要使用Angular的HttpClient?哪里不符合要求?

橄榄树丛1

这只是一个不同的API。可观察对象有一种更好的方法来分离“事物如何流动”(所有运算符:映射,合并,合并等)与执行该方法(.subscribe)相比,这通常有助于获得更好的画面。如果请求失败,则Plus提供了有用的方法来取消或重试该请求。

而且,Observable.toPromise()如果需要Promise API ,您可以随时使用(使用async / await,这也非常有用)

因此,对我而言,这只是两种表示同一事物的方式,每种方式都具有另一种优势,但是由于Observable更通用,因此可以使用它们-您可以从Observable到Promise来回转换,但是Observables带来了Promises不能提供的功能没有。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

为什么我应该在Flutter中使用Cards?

为什么 mutate() 给我一个错误,我应该在使用整数向量时使用整数向量?

为什么我在使用pycorenlp.StanfordCoreNLP.annotate时得到String应该在哪里获得字典?

为什么我的py_test应该在无法通过测试时通过测试?

为什么Windows 8.1应该在我的“全名”出现的地方使用我的Hotmail地址?

什么时候以及为什么我们应该在角度使用View Encapsulation

什么是获取日期,比较日期,获取小时的最佳函数,我应该在PHP中使用

为什么我应该在Fortran中使用“仅使用”

为什么Oracle应该在使用索引时使用全表扫描?

为什么我应该在32位版本上使用64位JDK?

为什么我不应该在ARMv6 +的系统内存上使用ioremap?

为什么我们不应该在Java中使用受保护的静态

为什么我们应该在Angular中的map()上使用subscribe()?

为什么我应该在AWS的ElastiCache上使用简单队列服务(SQS)

为什么我不应该在PHP中使用mysql_ *函数?

为什么我应该在sbt playframework项目中使用前端插件?

为什么我不应该在继承中使用平等?

为什么我们应该在线程中使用Join?

为什么我应该在MVP GWT项目中使用ClientFactory?

为什么我不应该在Android中使用System.out.println()

为什么我应该在oracle中按顺序使用缓存和顺序?

为什么在Java中我应该在null上使用(String [])null?

为什么我应该在简单的对象配置上使用Angular的依赖注入?

为什么我不应该在React Redux中使用toJS()?(mapStateToProps)

为什么我应该在 Angular 订阅中使用带有管道的选择?

为什么我应该在 Projectile Motion 中使用速度方程而不是位置方程

为什么我应该在Laravel中使用事件和侦听器

为什么我们应该在退货声明中使用{}

为什么我们应该在 git commit 命令中使用 -m?