我尝试了解为什么HttpClient构造函数没有真正的实现。
实际上,构造函数包括类型为抽象类(HttpHandler)的参数。那么为什么HttpHandler没有实现?还是为什么他的实现如此秘密地将其深深地嵌入到DI系统中?
在哪里可以找到他的实现代码?
答案 0 :(得分:1)
嗯,我在角度仓库中发现了一些东西。 Here您可以看到 HttpBackend 实现了 HttpHandler ,但是它也是抽象的。但是,您进一步可以找到 HttpBackend 的不同实现,例如HttpXhrBackend或JsonpClientBackend。 HttpXhrBackend 是使用XMLHttpRequest API将请求发送到后端服务器的实现。 JsonpClientBackend -执行JSONP样式请求(完全不使用XMLHttpRequest对象)。
总体 HttpHandler 它是处理 HttpRequest 并以 Observable 方式返回 HttpResponse 的服务的抽象,因此它从 HttpEvents 内部创建了此Observable >浏览器API提供的。例如, XMLHttpRequest 具有诸如 onLoad , onError , onUpProgress 和 HttpXhrBackend 之类的事件。 HttpHandler 的实现将所有这些事件转换为 Observable流。希望有道理。