AngularJs 之 Promise 探究

来源:互联网 发布:邯郸学院软件学院 编辑:程序博客网 时间:2024/05/17 03:12

一、Promise 存在的意义

  解决代码层次变深后,带来的难以阅读、调试、维护、升级这些难题。

二、JavaScript传统的异步调用是使用回调函数,当我们需要对三个及三个以上的服务器进行调用访问时,如果使用回调函数的方式,那就是一层嵌套一层,最后就不知道嵌套到哪里去了,而且每一层之间如果涉及到参数的传递或者返回值的共享,那可真的是要玩死你 @_@ 。最终结果要不就是写一个几十上百行的一个嵌套层,就像俄罗斯的套娃,要不就是写几十个 fuction 管理每一层的参数和返回值。要是命名再不规范一点(用重庆话说就是:脑壳都要给你仔儿扣爆)#_#

Promise实现这种业务的时候,只能用行云流水来形容,齐刷刷地干完。

$http.get('/api/test').then(function(cresponse){//访问第一个server  return $http.get('/api/' + cresponse.data.key);//访问第二个server 此时返回一个Promise对象 可供下一层级调用}).then(function(aresponse){  return $http.get('/zs/' + aresponse.data.api);访问第三个server 此时返回一个Promise对象 可供下一层级调用}).then(function(bresponse){  //最终成功时的处理,当然你也可以一直向下调用},function(error){  //最终失败的处理});

没有一层层嵌套的代码,是不是清爽多了。  慢着!你说还看不出有什么好处,好吧,那我就上原始的JavaScript模拟访问服务器,实现上面的功能。(注:我们假定以下代码块中的Hget方法是封装好的访问服务器的方法(博主是个大懒虫!!  哪昵?懒也是本程程的'美好品质'。))

Hget('/api/test', function(result){//第一层访问  Hget('/api/', function(result){//第二层<pre name="code" class="javascript">    Hget('/api/', function(result){//第三层<pre name="code" class="javascript">       if(result.data.success){          console.log(result.data.msg);       } 
});

});})

好了,效果出来了。

三、Promise 能实现以下功能

1. 每一个异步任务都会返回一个promise对象

2. 第一个promise 函数都含有一个then函数,成功及错误处理函数

3. 当异步任务结束时, 处理成功和失败的函数都只会被调用一次。

4. then 函数同样会返回一个promise对象

5. 每一个处理函数,都可以返回值并传入下一个函数链中。

6. 如果处理函数返回promise对象(触发一个异步请求),那么下一个处理函数在请求结束后会立即被调用。


好了,打完收工。下次再战。






0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 边打电话边被侵犯中文字幕 一个女的在厨房被水电工侵犯 中文字幕侵犯上司影音先锋 希岛爱理视频水电工侵犯 夏日彩春经典作品视频 被水电工掠夺的妻子 多爱井野再次被水电工 维修工强家庭主妇 满员电车大腿颤抖3 公交汉痴未删减版 弟弟的妻子在线播放 妻子被修空调的白玩了一下午 pz505被水电工侵 中文字幕侵犯妻子 妻子被楼下修理工白玩 边打电话边骗她老公在跑步 中山理莉 中文字幕 在线播放 白石利奈 在线 20岁女孩被四个强壮男电影 边打电话边做女客服中文版 电车侵扰bd 被夫侵犯bd 中文字幕边打电话边做 白石茉利奈star-782 在丈夫面前被别人犯侵天翼电影 中文版丈夫的上司连续浸七天 吉尺明步110部连接 吉g明教师步中文字迅雷下载 吉次明涉作品 被丈夫好友侵犯有感觉了中文3 侵犯新娘在丈夫面前被侵先锋 吉朋步高清在线 吉译朋步查官 新娘在婚礼上的厕所被动态 在丈夫遗像面前被侵演员叫什么 吉译朋步30分钟视频教程 吉译朋步义兄 吉译朋步孩子线播放 丈夫面前侵犯中文高清在线播放 在线中文字幕最好看最经典 丈夫面前不允许出声的侵犯2