Promise:解决异步回调问题
let a=10;
let promise = new Promise(function(resolve,reject){
//resolve,成功时调用
//reject,失败时调用
if (a==10) {
resolve('成功')
}else{
reject('失败')
}
});
// promise.then(success,fail);
promise.then(res=>{
console.log(res);//成功
})
Promise.all([p1,p2,……])
let p2= Promise.resolve('bbb');
let p3=Promise.resolve('ccc');
let p4=Promise.resolve('ddd');
Promise.all([p2,p3,p4]).then(res=>
{
console.log(res);//["bbb", "ccc", "ddd"]
let [res1,res2,res3]=res;
console.log(res1,res2,res3);//bbb ccc ddd
})
Promise.race([p1,p2,……])只要有一个成功就返回
let p2= Promise.resolve('bbb');
let p3=Promise.resolve('ccc');
let p4=Promise.reject('ddd');
Promise.race([p2,p3,p4]).then(res=>
{
console.log(res);
}).catch(err=>{
console.log(err);
})//结果是bbb
Promise用于数据交互
let status=1;
let userLogin = (resolve,reject)=>{
setTimeout(()=>{
if(status == 1){
resolve({data:'xxxxx',msg:'ccc',token:'xahoagoa'});
}else{
reject("shibaile");
}
},2000);
};
let getUserInfo = (resolve,reject)=>{
setTimeout(()=>{
if(status == 1){
resolve({data:'获取用户信息成功',msg:'梭梭酱',token:'tiaotiaohou'});
}else{
reject('lose');
}
},1000);
}
new Promise(userLogin).then(res=>{
console.log(res);//{data:'获取用户信息成功',msg:'梭梭酱',token:'tiaotiaohou'}
console.log('用户登录成功');
return new Promise(getUserInfo);
}).then(res=>{
console.log('获取用户信息成功');
console.log(res);
})