1、promise的作用
主要解决异步深层嵌套的问题
promise提供了简洁的API使得异步操作更加容易
2、promise的基本使用
//1.我们使用new来构建一个Promise Promise的构造函数接收一个参数,是函数,并且传入两个参数: resolve,reject, 分别表示异步操作执行成功后的回调函数和异步操作执行失败后的回调函数
var p = new Promise(function(resolve, reject){
//2. 这里用于实现异步任务 setTimeout
setTimeout(function(){ var flag = false; if(flag) {
//3. 正常情况
resolve('hello'); }else{
//4. 异常情况 reject('出错了')
}
},
100); });
// 5 Promise实例生成以后,可以用then方法指定resolved状态和reject状态的回调函数
// 在then方法中,你也可以直接return数据而不是Promise对象,在后面的then中就可以接收到数据了
p.then(function(data){
console.log(data)
},function(info){
console.log(info)
});
3、promise基本API
实例方法
.then()
得到异步任务正确的结果
.catch()
获取异常信息
.finally()
成功与否都会执行(不是正式标准)
静态方法
.all()
Promise.all 方法接受一个数组作参数,数组中的对象(p1、p2、p3)均为promise实例(如果不是一个 promise,该项会被用 Promise.resolve 转换为一个promise)。它的状态由这 三个promise实例决定
.race()
Promise.race 方法同样接受一个数组作参数。当p1, p2, p3中有一个实例的状态发生改变(变为 fulfilled 或 rejected ),p的状态就跟着改变。并把第一个改变状态的promise的返回值,传给p的回调函数