AngularJs 之 Promise 探究

2024-06-06 19:32
文章标签 angularjs promise 探究

本文主要是介绍AngularJs 之 Promise 探究,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、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对象(触发一个异步请求),那么下一个处理函数在请求结束后会立即被调用。


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






这篇关于AngularJs 之 Promise 探究的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1037027

相关文章

Linux系统稳定性的奥秘:探究其背后的机制与哲学

在计算机操作系统的世界里,Linux以其卓越的稳定性和可靠性著称,成为服务器、嵌入式系统乃至个人电脑用户的首选。那么,是什么造就了Linux如此之高的稳定性呢?本文将深入解析Linux系统稳定性的几个关键因素,揭示其背后的技术哲学与实践。 1. 开源协作的力量Linux是一个开源项目,意味着任何人都可以查看、修改和贡献其源代码。这种开放性吸引了全球成千上万的开发者参与到内核的维护与优化中,形成了

JavaScript Promise技术

你可能已经知道Promises现在已经是JavaScript标准的一部分了。Chrome 32 beta版本已经实现了基本的Promise API。如今,Promise的概念在web开发中已经不是什么新鲜玩意了。我们中的大多数人已经在一些流行的JS库例如Q、when、RSVP.js中使用过了Promises。即使是jQuery中也有一个和Promises很类似叫做Deferred的东西。但是Ja

使用 AngularJS 从零构建大型应用

0、导言1、准备工作2、构建框架3、丰富你的directives4、公用的services5、用controllers组织业务 导言 纵览线上各种AngularJS教程,大部分都是基础与一些技巧分析。 如果你已经能运行你的ng-app,但又找不到实际案例可以参考。那么本文应该对您有所帮助。 本文将以电商产品:友好速搭 其中的 店铺后台 作为的实际案例,裸奔展示如何从零构建“自以为大型的”A

“序列优化探究:最长上升子序列的算法发现与应用“

最长上升子序列 最长上升子序列是指在一个给定序列中,找到一个最长的子序列,使得子序列中的元素单调递增。例如,序列 [1, 3, 5, 4, 7] 的最长上升子序列是 [1, 3, 5, 7],长度为4。 这是一个经典的动态规划问题。 假设dp[i]表示以第i个元素为结尾的最长上升子序列的长度。 可以用一个嵌套循环来遍历所有的元素对,如果前一个元素小于后一个元素,则可以将后一个元素添加到

AngularJS 的作用

作者:caoglish 链接:https://www.zhihu.com/question/22079371/answer/21369786 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 未来的发展趋势是前端后端只靠json数据来进行通信:后端只处理和发送一段json数据到前端,然后计算和模板渲染都在前端进行。而前端的改动后,形成json数据然后传回

Promise的异步调用

Promise调用两个接口,第二个接口的入参为第一个接口的返回值 Promise的异步调用 应用场景实例 应用场景 Promise调用两个接口,第二个接口的入参为第一个接口的返回值 实例 1.两个接口的调用,正常的写法 // 登录接口function login(userInfo) {return new Promise(function(resolve, reject)

JavaScript高级语法之异步Promise(1:入门)

文章目录 1 callback hell(回调地狱)1.1 问题引入1.2 promise简介 2 Promise使用2.1 创建一个Promise容器2.2 then方法2.3 then方法链式操作2.4 then方法链式操作的异常处理2.5 触发resolve条件2.6 Jquery中使用Promise 1 callback hell(回调地狱) 1.1 问题引入 层层嵌

【Redis实战专题】「技术提升系列」夯实基础分析探究List列表的点点滴滴

夯实基础分析探究List列表的点点滴滴 List列表介绍队列和堆栈场景常用操作指令llen获取链表的长度llen指令的案例介绍添加购物车信息获取用户数购物车数量 lindex获取指定位置的元素lindex指令的案例介绍获取第三个位置的购物车数据 lrange获取链表子元素列表下标的选择lrange指令的案例介绍 lset修改指定位置元素lset指令的案例介绍 linsert对链表的某个值

深入探究RTOS的IPC机制----邮箱

阅读引言: 因为将来工作需要, 最近在深入学习OS的内部机制,我把我觉得重要的、核心的东西分享出来, 希望对有需要的人有所帮助, 阅读此文需要读友有RTOS基础, 以及一些操作系统的基础知识, 学习过Linux的最佳, 特别是想RT-Thread适合Linux非常像的, 代码风格、IPC机制等等。 目录 一、RT-Thread中邮箱的特性 二、 邮箱的源码实现 1,邮箱

Promise顺序打印#Vue3#for循环中调用接口顺序输出

Promise顺序打印#Vue3#for循环中调用接口顺序输出 按照文件id来顺序打印出图片路径 <!-- <el-scrollbar max-height="500"> --><div v-for="(item, index) in testArr" style="float: left"><span>{{ index + 1 }}</span><img style="width: 30