ES6中Promise的简单理解
一个函数参数:new Promise(function(resolve, reject))
每个Promise构造函数可接受一个参数,该参数为一个函数,该函数又有两个参数resolve和reject,分别表示为成功之后的回调函数和失败之后的回调函数。
当异步操作执行成功后,会将异步操作结果作为参数传入 resolve 函数并执行,此时 Promise对象状态从 pending 变为 fulfilled ;
失败则会将异步操作的错误作为参数传入 reject 函数并执行,此时 Promise对象状态从pending 变为 rejected
两个状态转换:pending->fulfilled, pending->rejected
从两种状态转换可以看出一个有三种状态,挂起态pending,已成功fulfilled,已失败rejected。状态一旦改变就不会再变。
三个原型方法:.then(), .catch(), .finally()
- .then()方法可提供一个或两个回调函数作为参数。第一个回调函数是Promise对象的状态由pending 变为 resolved 时执行;第二个回调函数则是Promise对象的状态由pending变为rejected 时执行,且第二个参数可选。
Promise.then(function(value){ // success },function(error){ // failure })
- .catch()方法提供一个回调函数作为参数,在失败时执行的回调函数。该回调函数的作用等同于.then()方法的第二个参数。以下写法等价。
Promise.then(undefined, function(error){ //failure }) // 等价于 Promise.catch(function(error){ //failure })
- .finally()方法,无论结局如何都会执行的回调函数。
四个普通方法:.all(iterable), .race(iterable), .resolve(value), .reject(value)
- .all()方法,iterable参数必须是一个可迭代对象。等所有传入的参数状态由pending->fulfilled时,执行状态为resolve的回调函数,即.then() 方法的第一个函数参数。若iterable中有一个状态变为rejected,则立马执行reject的回调函数。
- .race()方法,iterable参数必须为可迭代对象。第一个状态由pending->rejected或pending->fulfilled触发,触发对应的resolve或reject函数,剩下的可迭代项继续执行,但执行结束后不再执行对应状态的回调函数。
- .resolve()方法,用于返回一个状态为 fulfilled 的Promise对象
- .rejecct()方法,用于返回一个状态为 rejected 的Promise对象
相关推荐
88254251 2020-11-01
bowean 2020-07-08
88520191 2020-07-05
Magicsoftware 2020-06-11
whynotgonow 2020-06-06
陈旭阳 2020-06-02
88520191 2020-05-20
89500297 2020-05-16
前端开发Kingcean 2020-04-16
lipin 2020-11-03
VitaLemon 2020-10-15
PinkBean 2020-08-19
sfkong 2020-08-02
yanchuncheng 2020-07-30
doupoo 2020-07-28
ChinaGuanq 2020-06-08
angqiuli 2020-06-06
airfling 2020-05-31
RainyX 2020-05-19