• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录

博客园    首页    新随笔    联系   管理    订阅  订阅

Promise/A+规范

1.1.1 Promise/A+规范

规范出现的原因

1、 我们不知道异步请求什么时候返回数据,所以我们就需要些回调函数。但是在某些情况下我们需要知道数据是在什么时候返回的,然后进行一些处理。

2、 当我们在异步回调里面处理的操作还是异步操作的时候,这样就形成了异步回调的嵌套

3、 正是为了杜绝以上两种情况的出现,社区出现了Promise/a+规范

 

规范的内容是什么

1、 不管进行什么操作都返回一个promise对象,这个对象里面会有一些属性和方法(这个效果类似于jquery中的链式编程,返回自己本身)

2、 这个promise有三种状态

Unfulfilled(未完成,初始状态)

Fulfilled(已完成)

Failed(失败、拒绝)

3、 这个promise对象的使用时通过then方法进行的调用

 

Promise的实现

因为他只是一个规范,所以在不同的框架或者平台下有不同的实现

Angular:$q服务

Node:q模块,co,then

Es6:Promise,  yield

Es7:async  await

 

怎么对promise对象的状态进行改变那?

1、 通过$q服务的deffer方法定义出来一个延迟对象。

 

2、 这个延迟对象都有三个方法

(1) resolved方法:当数据请求成功的时候调用,参数是成功返回的数据对象,把promise对象Unfulfilled状态改为fulfilled状态。

(2) rejected方法:当数据请求失败的时候调用,参数是失败的原因,把promise对象Unfulfilled状态改为failed状态。

(3) 怎么知道在promise中调用哪个回调函数那,就是通过promise对象的状态进行判断的。

 

 

Promise/A+规范简介

http://www.jb51.net/article/50725.htm

 

Promise/A+规范表现形式:

1、可以通过链式编程的方式对异步操作进行同步处理

2、上一个操作的输出值是下一个操作的输入值

 

$http配合$q的使用

 

在controller中使用

 

1.1.2 $q服务

$q服务的使用:

http://blog.csdn.net/renfufei/article/details/19174015

 

$q服务使用步骤:

1、首先要子啊factoruy中注入$q服务

2、在Factory中使用如下图

 

3、在controller中使用

 

 

4、把异步变为同步的操作,上一个操作的输入时下一个操作的输入

 

 

posted @ 2017-09-04 22:49  qingqing_shi  阅读(2198)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3