1.promise对象是一个代理对象,一个代表为知返回结果的对象值。这个值在promise对象创建时可能是未知的,它允许你为异步操作的成功和失败分别绑定相应的处理方法,这让异步方法可以像同步方法那样返回值,但并不是立即返回最终执行结果,而是返回一个能代表未来出现的结果的promise对象。(pending、fulfilled、rejected)
2.使用:
new Promise(executor)
executor:一个带有两个参数(resolve,reject)的方法,resolve为fulfilled状态,即成功之后调用,reject为rejected状态,即失败之后调用。new Promise((resolve,reject)=>{})
1.executor在创建promise对象时立即调用。2.若executor函数中抛出错误,promise状态为rejected,executor函数返回值被忽略。
3.状态:
pending:初始状态 fulfilled:成功状态 rejected:失败状态
1.fulfilled、rejected被统称为settled,fulfilled也被称为resolved。2.只有两种状态变化过程:pending-fulfilled、pending-rejected,且状态只可变化一次,一旦发生变化便会一直保持这个结果。
4.属性:
1.length:Promise构造器参数个数,始终为1(唯一参数executor)。2.prototype:构造器原型。
5.方法:
Promise.prototype.then(resolve[,reject])
resolve为成功回调函数,reject为失败回调函数(可选),参数为Promise实例返回值。
Promise.prototype.catch(reject)
处理内容包括:1.rejected状态对应返回结果。2.catch方法前抛出的错误。
Promise.prototype.finally()
Promise实例最终必须执行的操作
Promise.all([p1,p2,...,p(n)])
p(n)(n=1,2,...)均为Promise实例
参数中任一Promise实力状态改变,该方法状态更新为相同状态,并且将该实例的返回结果作为参数传给该方法的回调函数。
6.Promise.resolve([p])
将p转化为一个Promise实例
p的值可以为:1.Promise实例p,该方法将不作任何处理,直接返回p本身。
2.含有then方法的对象p,该方法将p转换为promise实例,并且立即执行p中的then方法
3.不含有then方法的对象,或者不是对象的p, 该方法将p转换为Promise实例,状态为fulfilled
4.无参数,该方法将p转换为Promise实例
注:该方法执行之后立即执行resolve,是在当前事件循环的结束时
7.Promise.reject(p)
将p转换为一个Promise实例,并立即执行reject,且回调函数的参数为p
8.Promise.try(p)
p为Promise实例,该方法相当于try{}catch{},Promise.try(p)返回的Promise实例通过catch()既可以捕获同步错误,也可以捕获异步错误。
注:所有的方法返回值均为新的Promise实例,因此都可以链式调用。
6.特点:
1.优点:1.通过同步的表达方式进行异步操作。2.统一的接口
2.缺点:1.一旦创建、无法取消。2.promise返回的信息只能通过回调函数传递到promise对象外部。