ES6-promise

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对象外部。

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