【发布时间】:2018-06-20 09:23:00
【问题描述】:
请查看两个答案。 (感谢 JLRishe 和 AngularInDepth.com)
AngularInDepth 还在他的帖子中添加了指向拦截器和 HttpClient 机制的有趣链接:
使用 RxJS 和 HttpClientModule,当调用 .get() 的 HttpClient 时,这个链中的返回值是什么?
constructor (private _http: HttpClient) {
...
this._http.get(url).map(res=>res.json()).toPromise() // how does this chaining work?
据我了解,_http.get(url) 返回一个 observable,但我们将 .map() 链接到 .get() 方法。
我也猜测下面的.map() 作为接收http-response 对象,我们及时将其转换为json 对象。最后,整个 observable 被转换为带有 .toPromise() 的 promise,这似乎并不关心 .map() 对 .get() 所做的任何事情
- 到目前为止,我了解到
_http.get()返回一个 observable 并且还将提供 http-response 对象(作为下一个或回调函数) - 是 .map() 函数,仅作用于响应对象,不会改变整个
_http.get()函数的返回类型。 (返回类型保持与可观察的相同)?我的假设是否正确? - 一般来说,如果上述情况属实,那么 JS 是如何确定什么样的链函数会作用于回调数据,哪些会作用于返回类型呢?我们如何实现我自己的自定义函数,以便我的链函数严格处理回调数据(如果我使用正确的术语,请纠正我)或返回类型?
- 我们能否将
.map()添加到所有异步函数(promise、observables、callbacks)以处理它们的回调数据?同样,.toPromise()是否适用于所有异步函数以将它们转换为 Promise?
【问题讨论】:
-
对于
.map,您使用的是Rx/rxjs吗? -
是的。感谢您指出。已添加到帖子中。
标签: javascript angular asynchronous promise angular5