欢迎光临散文网 会员登陆 & 注册

ES6 Promise(2) 基本用法

2020-04-25 12:54 作者:一枚猿  | 我要投稿

创建Promise



Promise 对象是由关键字 new 及其构造函数来创建的。该构造函数会把一个叫做“处理器函数”(executor function)的函数作为它的参数。这个“处理器函数”接受两个函数——resolve 和 reject ——作为其参数。当异步任务顺利完成且返回结果值时,会调用 resolve 函数;而当异步任务失败且返回失败原因(通常是一个错误对象)时,会调用reject 函数。



上面的myPromise 是一个Promise对象。它将拥有Promise的一些方法。


上例运行的结果。


按照上面的思路,如果我们想让某个函数拥有promise的功能,只需要让它的返回值是一个Promise对象就可以了。比如




示例1

10秒之后,在页码上打印当前时间。



提示

不要尝试着在Promise里面写定时器,那样是没有效果,因为只要调用了resolve或reject,说明我们这个promise已经结束了。如果想加入定时器,参见示例2.



示例2


每隔1秒,在页码上打印出当前时间。



运行效果:



示例3

ajax请求。下面是用Promise来实现ajax请求。


运行结果:


为什么要用promise



011、回调地狱 + 异步同步事件调用顺序带来的双重伤害对于Promise的执行很好的规范了对于复杂的嵌套回调的写法,并且对于异步事件的执行顺序也是更加清晰。


022、回调事件的分离

Promise有三种状态:未定(pending)、接受(fulfillment)和拒绝(rejection)。并且,只能由未定状态变为接受状态,或者由未定状态变为拒绝状态。

只有调用resolve或reject回调函数时,这个Promise的状态才能从未定向其他两个状态改变。并且可以将异步操作的函数分离出来,提高了复用性。

























































ES6 Promise(2) 基本用法的评论 (共 条)

分享到微博请遵守国家法律