ES6 Promise简介

作为一种新的异步编程方案,个人觉得Promise只是在异步请求流程上让开发者有更好的控制。把原本的异步回掉用同步的展现形式(then)给表现出来。
ES6提供了Promise构造函数,Promise的基本用法是这样的。

1
2
3
4
5
6
7
8
var promise = new Promise((resolve,reject)=>{
if(成功){
resolve(value);
}else if(失败){
reject(error);
}
});
promise.then(function1,function2);

首先创建一个Promise对象,接收一个函数作为参数,该函数有两个参数resolve与reject由es内部机制提供的。当调用resolve时会去执行后边then指定的成功时候的回调函数function1,调用reject时会去执行then指定的失败回掉的函数function2。

这种模式一个明显的有点就是,将回掉与异步请求过程分开的,当有多个回掉时会时过程变的清晰。如:

1
2
promise.then(function1,function2)
.then(function3);

当成功时会分别调用function1,function3,并且在function1中的返回值会作为function3的参数传递到function3.

promise.then

promise.then返回的永远是另一个promise对象所以可以实现链式调用(注意是另一个promise),每一个then返回的promise都不一样,后一个then的调用有前一个promise状态的改变决定。

promise.catch

表示状态为reject时的回调

Promise.all

Promise.all([a,b,c,d]);将a,b,c,d合并为一个promise只有当所有的promise都resolve时,合并后的promise才发生resolve。

Promise.race

与Promise.add相对,合并后的promise对象状态由最先发生状态改变的那个promise状态决定。

Promise.reslove

该方法将一个对象转换为promise并返回,并且状态为resolve。

Promise.reject

该方法将一个对象转换为promise并返回,并且状态为reject。