Rumah  >  Artikel  >  hujung hadapan web  >  Angularjs的promise对象详解

Angularjs的promise对象详解

php中世界最好的语言
php中世界最好的语言asal
2018-03-08 10:24:031793semak imbas

这次给大家带来Angularjs的promise对象详解,使用Angularjs的promise对象时注意事项有哪些,下面就是实战案例,一起来看一下。

promise是什么?要了解它,需要先从我们面临的问题开始讲起。在操作ajax异步请求时候,必须添加一个callback函数,用于处理请求成功后的逻辑,但是这种方式是以牺牲控制流,异常处理为代价的,并且还有可能陷入callback函数嵌套中,流程复杂,代码臃肿。在angularjs里面,处理异步,我们可能首先会想到用$watch监听器来实现,但是过多的监听器,会影响性能,代码结构上也会比较乱。

为了解决这种情况,在Angularjs里面引入了promise对象的概念,确切的说,它是一种优雅的处理异步编程的模式,可以有效地解决回调函数的繁琐,并以一种同步的方式去处理业务流程。同时允许在回调中采用链式写法,接下来我们详细的说明promise对象的使用方法:

promise的基本概念和使用方法

1、为了更加形象的说明promise的概念,进一步了解她的属性和方法,在这里我们通过一个例子来比拟描述。
例如:一个名为A的客户,向一家名为B的公司要求开发一个WEB页面,B公司答应三天可以做完,这成活就是一个promise对象,它本质上是A客户发起来的延期业务,在Angular里面我们可以理解为通过$q对象调用defer方法创建了一个延期对象的过程。

2、接下来在这三天当中,客户可能会与公司进行开发进度交流,这可以理解为调用延期对象的8e99a69fbe029cd4e2b854e244eab143notify128dba7a3a77be0113eb0bea6ea0a5d0方法发送消息的过程,表明这个延期业务的状态是"未完成或者进行中";如果在三天以后,B公司将A客户要求开发的页面正常交付,则可以理解为调用眼器对象中的8e99a69fbe029cd4e2b854e244eab143resolve128dba7a3a77be0113eb0bea6ea0a5d0方法过程,表明这个延期业务的状态是"已完成";而如果B公司在制作过程中,发现无法实现,则同坐A客户不能交付,这可以理解为调用延期对象中的8e99a69fbe029cd4e2b854e244eab143reject128dba7a3a77be0113eb0bea6ea0a5d0方法的过程,表明这个延期业务的状态是"无法完成"。

3、如果B公司在接到A客户需求的时候,发现之前做过一个项目与现在需求完全一致,决定将原来做好的项目直接给B公司,客户也很满意。这种情况没有产生延期业务,则可以理解为通过$q对象调用when方法的过程。

4、通过这个例子,我们可以群体给出的看出,A客户和B公司彼此都没有小号太多的时间,过程也非常通常,这正是promise对象的重要特征。此外,从例子中我们形象的知道了promise对象的创建过程。以及defer()、notify()、reject()、when()方法表示的功能。

下面,我们正是来介绍promise对象的创建过程。想要在Angular中创建一个promise对象,必须在模板中先注入$q服务,并先调用defer方法创建一个延期对象,代码如下:

angular.module("a",[])
  .controller("c",["$scope","$q",function($scope,$q){  var defer=$q.defer();
}])

相信看了本文案例你已经掌握了方法,更多精彩请关注php中文网其它相关文章!

相关阅读:

WEB的接口管理工具

ionic应用里文字不能长按复制、粘贴怎么办

Atas ialah kandungan terperinci Angularjs的promise对象详解. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn