ES6高级-Promise的用法

概念:相当于一个容器,保存着未来才会结束的事件(异步操作)的一个结果。

 特点:

1.对象的状态不受外界影响,处理异步操作三个状态:Pending(进行) Resolved(成功) Rejected(失败)。

2.一旦状态改变就不会再变。

(1)Promise对象有两个方法:

1.then()方法是执行异步任务返回成功的结果

then()的第一个参数是resolve回调函数,第二个参数是可选的,是reject状态回调的函数,then()方法返回的是一个新的Promise实例可以采用链式编程。

2.catch()方法是执行异步任务返回失败的结果

catch(err=>console.log(err))方法相当于then(null,err=>console.log(err)),所以用then写的可以改成下面这样(下面的写法也是最常用的写法):

ES6高级-Promise的用法_第1张图片 

 来看几个Promise的案例代码

(一)


    

输出结果:

 (二)下面这个代码很重要:通过Promise来设置定时器的秒数


    

then()返回的是一个新的Promise实例,看下面的代码:


    

输出结果:

ES6高级-Promise的用法_第2张图片

 (2)Promise对象的其他方法

关于Promise是同步还是异步可以看这个博客:promise是同步还是异步的?_Shi Jian Xin的博客-CSDN博客_promise是同步还是异步

1.resolve()方法

返回的是一个Promise实例,看下面的代码:


    

输出结果:

ES6高级-Promise的用法_第3张图片

 2.reject()方法

返回的同样是一个Promise实例,看下面的代码:


    

 3.all()方法

有时候会有多个Promise,比如在游戏控制的时候,Promise1是图片加载,Promise2是flash加载,Promise3是静态资源加载,要求当三个都加载完成之后再进行页面的初始化,这个时候就要用到all()方法,总结就是异步并行操作。

ES6高级-Promise的用法_第4张图片

(4)race()方法

某个异步请求设置超时时间,并且在超时后执行相应的操作(重要)


    

输出结果:

(5)done()和finally()

不管是resolve还是reject,也就是不管成功还是失败,done()和finally()方法始终会执行。

你可能感兴趣的:(ES6,es6,javascript,前端)