美文网首页Web前端之路
Angularjs的promise对象(一)

Angularjs的promise对象(一)

作者: 超人不会飞jjw | 来源:发表于2016-05-03 16:59 被阅读254次

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

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

    promise的基本概念和使用方法

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

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

    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();
    }])
    

    相关文章

      网友评论

        本文标题:Angularjs的promise对象(一)

        本文链接:https://www.haomeiwen.com/subject/qxglrttx.html