美文网首页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对象(一)

    promise是什么?要了解它,需要先从我们面临的问题开始讲起。在操作ajax异步请求时候,必须添加一个callb...

  • Promise then方法的链式调用

    返回的是非promise对象 优化:可能返回promise对象和非promise对象

  • Promise,async,await笔记

    Promise,async,await笔记 Promise 创建promise对象 Promise对象构造方法传入...

  • ES6之promise(resolve与reject)

    一、 Promise.resolve() 有时需要将现有对象转为 Promise 对象,Promise.resol...

  • ES6之promise(基本用法)

    一、promise的含义 Promise对象有以下两个特点。 (1)对象的状态不受外界影响。Promise对象代表...

  • Promise用法小结

    Promise 的含义 Promise对象有以下两个特点 :(1)对象的状态不受外界影响。Promise对象代表一...

  • 关于Promises

    一、名字 promise(首字母小写):一个对象,Promise的实例对象 Promise(首字母...

  • Promise

    Promise对象就是一个异步请求占位符对象 把异步请求封装在Promise对象中,Promise的构造函数传入一...

  • Promise对象原理解析

    Promise对象原理解析 ES6 原生提供了 Promise 对象。所谓 Promise,就是一个对象,用来传递...

  • ES6-Promise对象 (下)

    ES6-Promise对象 (上) 1.Promise对象方法 (1)Promise.all(iterable);...

网友评论

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

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