angular 异步处理模式promise---$q
2016-02-16 16:30
197 查看
promise是一种异步处理模式,因为无法确定异步何时调用回调函数,所以需要promise告知。
Promise的基本用法
上面代码表示, $q.defer() 构建的 deffered 实例的几个方法的作用。
如果异步操作成功,则用resolve方法将Promise对象的状态变为“成功”(即从pending变为resolved);
如果异步操作失败,则用reject方法将状态变为“失败”(即从pending变为rejected)。
如果异步操作未完成,则用notify方法将状态变为unfulfilled状态,在resolve或reject之前可以被多次调用。
最后返回 deferred.promise ,我们就可以链式调用then方法。
api.action('s101', query) //action方法会返回$q.defer().promise .then( function(data) {
//如果请求成功执行 var vdata = api.data_isok(data); if(vdata) { mjSession.save(vdata); mjModalS.close(); } else { alert(mjLang.T('5_85')+'!'); } }, function() {
//如果请求失败执行 alert('error'); } ) .finally(
//无论请求成功或者失败都要执行
function() { $scope.deleteLoading = false; });
)
Promise的基本用法
上面代码表示, $q.defer() 构建的 deffered 实例的几个方法的作用。
如果异步操作成功,则用resolve方法将Promise对象的状态变为“成功”(即从pending变为resolved);
如果异步操作失败,则用reject方法将状态变为“失败”(即从pending变为rejected)。
如果异步操作未完成,则用notify方法将状态变为unfulfilled状态,在resolve或reject之前可以被多次调用。
最后返回 deferred.promise ,我们就可以链式调用then方法。
相关文章推荐
- AngularJS在大型单页面应用中的性能优化
- AngularJS和DataModel
- AngularJS中实现日志服务
- POJ2836 Rectangular Covering(状压DP)
- angularJS框架的注意
- Angularjs 源码分析-setupModuleLoader
- angularJS双向数据绑定
- 学习使用AngularJS文件上传控件
- 深入浅析AngularJS和DataModel
- 优化Angular应用的性能
- 基于AngularJs的上传控件-angular-file-upload
- Angular 学习系列 - - angular.bind、angular.bootstrap、angular.copy
- Angular 学习系列 - - $rootScope.Scope
- Angular 学习系列 - - ngIf、ngSwitch、ngHide/ngShow
- Angular 学习系列 - - 脏值检查及其相关
- Angular 学习系列 - - ngInclude、ngTransclude
- Angular 学习系列 - - angular.uppercase、angular.lowercase、angular.fromJson、angular.toJson
- Angular 学习系列 - - $cacheFactory
- Angular 学习系列 - - ngRoute Angular自带的路由
- Angular 学习系列 - - ngChange、ngChecked、ngClick、ngDblclick