- Promise
解决异步回调问题。
let a =1;
let promist = new Promise(function(resolve,reject){
if (a==10) {
resolve('成功');
}else{
reject('失败鸟');
}
})
promise.then(res=>{
console.log(res)
},err=>{
console.log(err)
})
2.Promise.resolve(“aa”);将现有的东西转成一个promise对象,resolve状态,成功状态。
等价于:new Promise(resolve=>{
resolve(“aaa”);
})
Promise.reject 类似,是转成失败状态。
Promise.all([p1,p2,p3]); 把promise打包,扔到一个数组里面。打完包还是一个promise对象。必须确保,所有的promise对象都是resolve状态,都是成功状态。
let p1 = Promise.resolve("aa");
let p2 = Promise.resolve("aa");
let p3 = Promise.resolve("aa");
Promise.all([p1,p2,p3]).then(res=>{
console.log(res)
}).catch(err=>{
console.log(err);
})
Promise.race([p1,p2.p3]);只要有一个成功就返回。
模拟ajax请求:
let status = 1;
let userlogin = (resolve, reject) => {
setTimeout(()=>{
if (status == 1) {
resolve({data:"xxxx",msg:"xxxx",token:"xxssdfdsf"});
}else {
reject("失败了");
}
},2000);
};
let getUserInfo = (resolve, reject) => {
setTimeout(()=>{
if (status == 1) {
resolve({data:"xxxx",msg:"xxxx",token:"xxssdfdsf"});
}else {
reject("失败了");
}
},1000);
};
new Promise(userLogin).then(res=>{
console.log("用户登陆成功")
return new Promise(getUserInfo);
}).then(res=>{
console.log("获取用户信息成功")
})