angularjs promise理解与使用
2016-09-14 17:54
260 查看
众所周知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比较简陋,不要见笑,我是句号,如果发现问题,或是存在什么问题,欢迎评论,谢谢。
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比较简陋,不要见笑,我是句号,如果发现问题,或是存在什么问题,欢迎评论,谢谢。
相关文章推荐
- 使用promise相较于ajax的优势(Angularjs $q 为例)
- js中promise的使用与理解
- ANGULAR JS PROMISE使用
- javascript angularjs 使用promise 异步获取数据
- 使用promise相较于ajax的优势(Angularjs $q 为例)
- AngularJS Socket.IO 另一种使用方式
- [学姿势]使用AngularJS+CodeIgniter框架经验谈
- 理解js闭包是为了避免使用闭包
- JS 对于回调函数的理解,和常见的使用场景应用,使用注意点
- Promise in AngularJS
- 关于 js 中的 call 和 apply使用理解
- 使用 Angular.js, Node.js 和 MongoDB开发简单案例
- Promise in AngularJS
- 使用 angularjs router 做单页应用
- JS 对于回调函数的理解,和常见的使用场景应用,使用注意点
- js中的call()方法理解和使用
- Promise in AngularJS
- 使用angular.js开发的一个简易todo demo
- 关于js中单引号(')和双引号(")的使用以及转义的理解
- 使用Angular.js建立页面级CRUD