[javascript] Promise简单学习使用

前端之家收集整理的这篇文章主要介绍了[javascript] Promise简单学习使用前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

原文地址:

解决回调函数嵌套太深,并行逻辑必须串行执行,一个Promise代表一个异步操作的最终结果,跟Promise交互的主要方式是通过他的then()方法注册回调函数,去接收Promise的最终结果值

Promise相关的协议有PromiseA和PromiseA+

定义一个类Promise

定义属性队列queue,初始化空数组[]

定义属性值value,初始化null

定义属性状态status,初始化“pending”(默认值)

定义成员方法getQueue(),返回属性queue

定义成员方法getStatus(),返回属性status

定义成员方法setStatus(),设置状态,传递参数:status,value

判断status为fulfilled或者rejected,

设置status属性this.status=status

设置value属性this.value=value || null ,如果不传value就是null

定义冻结变量freezeObject

定义成员方法isFulfilled(),判断当前状态是否是(完成)

定义成员方法isRejected(),判断当前状态是否是(失败)

定义成员方法isPending(),判断当前状态师傅是(等待)

定义成员方法then(),传递参数:onFulfilled成功的回调,onRejected失败的回调

定义对象handler对象,属性fulfilled,rejected两个回调函数

定义handler对象的deferred属性,Deferred对象

判断当前状态是否等待,如果是等待 把handler对象塞入queue队列数组

如果不是等待状态,调用Utils对象的procedure()方法,参数:status,

返回 handler.deferred.promise对象

定义一个类Deferred

定义属性promise,初始化Promise对象

定义成员方法resolve(),传递参数:result结果

         判断Promise对象的状态是 等待,直接返回

         调用Promise对象的getQueue()方法获取queue数组

         循环数组

         //todo调用工具类Utils. procedure()方法,参数:“fulfilled”,元素,err信息

         调用Promise对象的setStatus()方法,设置状态,参数:'fulfilled',result

定义成员方法reject,传递参数:err错误信息

         判断Promise对象的状态是 等待,直接返回

         调用Promise对象的getQueue()方法获取queue数组

         循环数组

         //todo,调用工具类Utils. procedure()方法,参数:“rejected”,元素,err信息

         调用Promise对象的setStatus()方法,设置状态,参数:'fulfilled',result

        

定义工具类Utils,使用匿名函数立即执行,得到一个对象

返回对象,对象中有一个方法procedure()

定义procedure()方法,传递参数:type状态类型,handler处理器数组,result结果

获取到处理函数func,在handler[type]

到这里我看晕了。。。

使用方法

定义一个函数ajax,传递参数:url路径

获取Deferred对象,new出来

ajax请求数据的代码,在返回数据的回调方法

如果成功了调用Deferred对象的resolve()方法,参数:返回的数据

如果失败了调用Deferred对象的reject()方法,参数:返回的数据

返回Deferred.promise对象

调用ajax()方法,得到promise对象,参数:url,

调用promise对象的then()方法,参数:匿名函数

         调用ajax()方法获取到promise对象,返回这个对象

形成链式调用

js部分:

PHP

PHP (['act']==1 json_encode(("code"=>200 (['act']==2 json_encode(("code"=>300 (['act']==3 json_encode(("code"=>400

猜你在找的JavaScript相关文章