Promise基本用法示例:
let i=100;
let promise=new Promise(function(resolve,reject){
if(i==100){
resolve('相等');
}
else{
reject('不相等');
}
});
promise.then(res=>{
console.log(res);//相等
},err=>{
console.log(err);
})
也可以用catch捕获错误结果:
promise.then(res=>{
console.log(res);//相等
}).catch(err=>{
console.log(err);
})
Promise.resolve('aa'); 将现有的东西,转化为一个promise对象,resolve状态,成功状态。
等价于:
new Promise.(resolve=>{
resolve('aa');
})
Promise.reject('aa'); 将现有的东西,转化为一个promise对象,reject状态,失败状态。
等价于:
new Promise.(reject=>{
reject('aa');
})
Promise.all([p1,p2,p3]); 把promise打包,扔到数组里,打包完成后还是一个promise对象。注意,必须确保,所有的promise对象,都是resolve状态,都是成功状态,否则报错。
let a=Promise.resolve('aa');
let b=Promise.resolve('bb');
let c=Promise.resolve('cc');
Promise.all([a,b,c]).then(res=>{
let [res1,res2,res3]=res;
console.log(res1,res2,res3);
}
);
Promise.race([p1,p2,p3]);只要有一个resolve状态,就不报错。
使用Promise模拟用户登陆大概流程:
let state=1;//模拟登陆成功状态
let userLogin=(resolve,reject)=>{
setTimeout(()=>{
if(state==1){
resolve({data:'xxxx',msg:'登陆成功',token:'xdskbhdshbhjd'});
}else{
reject('登陆失败');
}
},2000)
};
let getuserinfo=(resolve,reject)=>{
setTimeout(()=>{
if(state==1){
resolve({data:'xxxx',msg:'获取用户信息成功',token:'xdskbhdshbhjd'});
}else{
reject('登陆失败');
}
},2000)
};
new Promise(userLogin).then(res=>{
console.log('登陆成功');
return new Promise(getuserinfo);
}).then(res=>{
console.log('获取用户信息成功');
})
网友评论