ES6 -Promise对象

作用:解决异步回调问题

1.语法

let promise=new Promise(function(resolve,reject){

// resolve 成功回调函数

// reject 失败回调函数

})

promise.then(successFn,failFn);

promise.catch(failFn) :reject,发生错误,别名

一般用法:promise.then(res=>{}).catch(err=>{})

let a=2;
let promise=new Promise(function(resolve,reject){
    if(a==1){
        resolve('sucess');
    }else{
        reject('fail');
    }
});
promise.then(successFn,failFn);
promise.then(res=>{
    console.log(res);
},err=>{
    console.log(err); //fail
});

// catch :reject,发生错误,别名
promise.catch(err=>{
  console.log(err); //fail
})


// 一般用法:promise.then(res=>{}).catch(err=>{})
promise.then(res=>{
    console.log(res);
}).catch(err=>{
  console.log(err); //fail
})

2.Promise.resolve('aa');//将现有的内容,转成一个promise对象,resolve成功状态

let p1=Promise.resolve('aa');
// 等价于
// let p1=new Promise(resolve=>{
//     resolve('aa');
// })

p1.then(res=>{
    console.log(res);//aa
})

3. Promise.reject('bb');//将现有的内容,转成一个promise对象,reject失败状态

let p2=Promise.reject('bb');
// 等价于
// let p2=new Promise((resove,reject)=>{
//     reject('bb')
// })

p2.catch(err=>{
    console.log(err);//bb
})

4.let p= Promise.all([p1,p2,p3]):把多个promise打包,到一个数组里面,打包完还是一个promise对象

1)只有p1、p2、p3都是resolve成功状态,p的状态才会变成 resolve成功,返回数组

2)只要p1、p2、p3之中有一个被rejected,p的状态就变成rejected,返回第一个被reject的实例的返回值

let p1=Promise.resolve('aa');
let p2=Promise.resolve('bb');
let p3=Promise.resolve('cc');
let p4=Promise.reject('dd');
let p5=Promise.reject('ee');

// 1)只有p1、p2、p3都是resolve成功状态,p的状态才会变成 resolve成功,返回数组
Promise.all([p1,p2,p3]).then(res=>{
    console.log(res);//["aa", "bb", "cc"]
    let [res1,res2,res3]=res;
    console.log(res1,res2,res3);//aa bb cc
}).catch(err=>{
    console.log(err);
});

// 2)只要p1、p2、p3之中有一个被rejected,p的状态就变成rejected,返回第一个被reject的实例的返回值
Promise.all([p1,p2,p3,p4,p5]).then(res=>{
    console.log(res);
}).catch(err=>{
    console.log(err);//dd
})

5. let p=Promise.race([p1,p2,p3]):只要p1、p2、p3之中有一个实例率先改变状态,p的状态就跟着改变。

  那个率先改变的 Promise 实例的返回值,就传递给p的回调函数。

let p1=Promise.reject('aa');
let p2=Promise.reject('bb');
let p3=Promise.resolve('cc');

Promise.race([p1,p2,p3]).then(res=>{
    console.log(res);
    console.log('success')
    
   
}).catch(err=>{
    console.log(err);//aa
    console.log('fail');
})

 

 
posted @ 2018-08-24 16:51  yuesu  阅读(174)  评论(0编辑  收藏  举报