博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Angular2组件开发—调用服务(三)
阅读量:7185 次
发布时间:2019-06-29

本文共 1059 字,大约阅读时间需要 3 分钟。

注入一个复杂的服务

EzAlgo相当简单,使用new或者使用Injector来获得一个实例看起来差别不大。那如果我们的EzApp组件要使用Http服务呢?

第一眼看上去,Http服务显然是一个真正有用的服务 - 因为看起来相当的复杂 - Http依赖于XHRBackend和BaseRequestOptions,而XHRBackend又依赖于BrowserXHR。

我们可以有两种方法获得一个Http的实例,以便通过它获得网络访问的功能:

1. 使用new进行实例化

如果我们使用传统的new方式创建Http实例,看起来应该是这样:

1 var xhrbe = new XHRBackend(BrowserXHR);2 var options = new BaseRequestOptions();3 var http = new Http(xhrbe,options);

这没什么新奇的,就是繁琐一点。

2. 使用注入器/Injector

如果使用注入器,我们需要向Angular2框架声明这些层叠的依赖关系:

1 @Component({2     appInjector : [3       bind(BrowserXHR).toValue(BrowserXHR),4       XHRBackend,5       BaseRequestOptions,6       Http7     ]8 })

bind(BrowserXHR).toValue(BrowserXHR)的意思是,如果需要注入BrowserXHR类型的变量,注入这个类本身而非其实例。

原理是这样,不过Angular2已经提供了一个定义好的变量httpInjectables,我们直接引用就可以了。

Observable

Observable是一种异步编程模式,与Promise不同,Observable等多的是从数据而非行为的角度 来封装异步代码。

Http服务的get()方法返回一个Observable对象,可以把Observable对象看做一个可订阅的数据流,你通过subscribe()方法订阅以后,每当数据流中有新的数据,你都会得到通知。

例如:

1  2  3  4     
5 appInjector 6 7 8 9 10 11
12 44 45

 

转载于:https://www.cnblogs.com/gett/p/5055065.html

你可能感兴趣的文章
支持常见数据库差异对照说明
查看>>
2018-2019-2 20165330《网络对抗技术》Exp1 PC平台逆向破解
查看>>
数组的高阶方法map filter reduce的使用
查看>>
用户线程和内核线程
查看>>
打开页面自动强制QQ对话
查看>>
php 代码设置跳转
查看>>
图的邻接表存储
查看>>
XSS绕过WAF的姿势
查看>>
[python] 类常用的内置方法
查看>>
01-kubernetes集群的基本概念
查看>>
vs2010 msvcr100.DLL 丢失!!! 用release 就可以了
查看>>
Spring RMI Example
查看>>
BZOJ1042: [HAOI2008]硬币购物
查看>>
sql面试题
查看>>
Linuxの安装SQL Developer工具
查看>>
Vue中axios的使用
查看>>
2048 控制台版(C#)
查看>>
[论文笔记] A Survey of Software Refactoring(TOSE, 2004)第一部分
查看>>
关于EOF和循环体的搭配使用。
查看>>
电梯调度--初
查看>>