angularjs promise理解与使用

来源:互联网 发布:剪裁照片的软件 编辑:程序博客网 时间:2024/06/06 01:31

众所周知JS是单线程的设计,一次只能执行一个任务,如果有多个任务需要执行,那么排队执行。这样的设计,好处:实现起来比较简单,容易操作。缺点是:容易形成阻塞,当有个任务耗时很长时,后面排队的任务就一直等待,无法执行,用户体验极差。javascript语言的执行模式分为了:同步模式、异步模式。同步模式就是前面所说的那样,异步模式是指:当前一个任务开始执行后,后一个任务不等待它执行结束再执行,而是直接开始执行,那么前一个任务怎么办?放心,前一个任务有callback回调函数。当触发回调函数后再执行前一个任务接下来需要执行的后续余留任务。

AngularJs提供了promise模式就是一种异步处理方式,大体的逻辑如下:

1.常见一个延迟对象实例;

2.在具体的函数时间方法中分别对应调用演示对象实例的resolve方法、reject方法、notify方法,分别代表当前任务执行成功,当前任务执行失败、当前任务执行状态;

3.在该函数中,最终会返回一个延迟对象实例的promise属性,该属性就包括之前三个方法中的返回值;

4.这样在调用函数的地方就得到了一延迟对象实例的promise属性,该属性有一个.then(function_resolve(value),function_reject(reason),function_notify(value))方法,可以看出该方法中有三个function,而且这三个function分别一一对应之前函数实现中所调用的三个方法,即我们在第一个方法中得到resolve()方法中的返回值,第二个方法中得到rejects()方法的返回值,第三个方法中得到notify()方法的返回值。

注:第三个方法可以多次调用,但是前两个方法只能调用一次,而且当调用之后,该任务到此结束,三个方法都将不再会有返回。

接下来看看我写的小Demo实例,(本来这块是打算写一个$http服务的,所以模块名称、方法名看上去怪怪的,不要在意细节嘛,大笑):

首先就是写了一个Service:


然后在controller中进行了调用:


大体上就是这么个节奏,Demo比较简陋,不要见笑,我是句号,如果发现问题,或是存在什么问题,欢迎评论,谢谢。

0 0
原创粉丝点击