angular的$q服务以及js的promise编程
来源:互联网 发布:谷歌数据分析师 编辑:程序博客网 时间:2024/05/21 08:50
JS;promise编程主要是优雅的代码风格,当业务逻辑极其复杂,而且函数之间的回调函数增多可以考虑promise编程::
JS的回调promise编程,上代码:
JS promise编程 //假设第一个请求:: var http1=new Promise(function(resolve,reject){ resolve("data1"); }) ; var http2=new Promise(function(resolve,reject){ resolve("data2"); }); var http3=new Promise(function(resolve,reject){ resolve("data3"); }); http1.then(function(data){ alert(data); //继续开始请求2发起 return http2; }).then(function(data){ alert(data); return http3; }).then(function(data){ alert(data); });此时最主要的就是:resolve和promise::
resolve主要是存储上一个函数的值存放位置::
promise:根据返回的promise:决定调用哪一个回调函数,可以一直链式编程下去::
angularjs中的promise编程:取决于$q这个指令。
直接返回$http说读不到数据,原因在于$http是异步请求,而且是“不可期”的,你不知道什么时候这个请求完成了。
而对于这种需要“同步”编程的方式,AngularJS提供了一个内置Service $q,它提供了一种承诺/延后(promise/deferred),可以保证我们的调用代码一定能够拿到数据。所以我们用起来可以像同步调用一样,话说回来,最终还是xhr异步请求。
在这种请求当中多个请求为了让其产生近似同步的概念:所以开始promise编程:
主要关键:$q.defer()获取defer对象存储$http请求的数据::根据请求结束返回promise对象,通过defer.promise
继续每一个请求完成返回promise:后开始执行下面的promise程序::
<pre name="code" class="html">$scope.loadCustomInfo=function(){ //保存数据信息resolve(value):向promise对象异步执行体发送消息告诉他我已经成功完成任务,value即为发送的消息。 var loadCustomdefer= $q.defer(); //存放数据 var params = {}; //根据保单号查询当前步数 params.slip_id =$rootScope.insurancecode; $http({ method: "POST", headers: {'Content-Type': 'application/x-www-form-urlencoded'}, url: $scope.address["loadcustominfo"], //查询步数 data: params, dataType: "json"}).success(function(data){ //保存数据 loadCustomdefer.resolve(data);//声明执行成功 }).error(function(data){ loadCustomdefer.reject(); //声明执行失败 $scope.alertModal("网络请求失败"); }) return loadCustomdefer.promise; };
var loadCustomInfopromise= $scope.loadCustomInfo();请求完成返回promise对象
第一个promise开始进行链式请求
initsteppromise.then(function(data){ //真正的数据: console.log("投保序列号1"); console.log(data); return loadCustomInfopromise; },function(error){}).then(function(data){ //第一次请求的数据: console.log("投保序列号2"); console.log(data); // return loadSlipSnInfopromise; }
这样解决了数据不同步问题:angularjs $q promise编程
0 0
- angular的$q服务以及js的promise编程
- Angular的 $q, defer, promise
- 浅谈Angular的 $q, defer, promise
- Angular的 $q, defer, promise,$http
- 浅谈Angular的 $http, $q, defer, promise
- Angular通信$q服务和promise对象
- angular的$q返回一个可链式调用的promise
- 形象的讲解angular中的$q与promise
- 形象的讲解angular中的$q与promise
- 形象的讲解angular中的$q与promise
- 形象的讲解angular中的$q与promise
- angular $q,defer,promise
- angular中的异步编程 $q的使用
- AngularJS中的$http、$q服务和promise对象的联系
- angularjs速成学习个人理解_6$q服务的promise
- AngularJS 的 $q 和 Promise
- node.js中使用q.js实现api的promise化
- angular中的$q与promise(综合)
- 【欢迎使用CSDN】
- LeetCode-83.Remove Duplicates from Sorted List
- 百度地图API使用
- 通知的写法
- 记录加入CSDN的第一天
- angular的$q服务以及js的promise编程
- label型向下选择类似选择器效果 demo
- memcached在centos minimal安装环境下编译安装
- Eclipse 4.5中安装SVN插件
- 自定义progressbar控件
- 廖雪峰的官方网站
- 使用Tinyfox部署Web API 读取配置文件问题
- 链表
- 大数问题之26进制转化