1.作用:防止出现回调地狱,提高代码的可读性,像同步操作那样去执行异步操作;一个Promise代表一个异步操作
2.简单理解写法:
let pro=new Promise((resolve,reject)=>{
if(Math.random()>0.5){
resolve("i'm resolve");//成功
}else{
reject("i'm reject");//报错
}
})
pro.then((res)=>{
console.log(res)
}).catch((err)=>{
console.log(err)
})
其中:resolve 对应的 then() 正确执行
reject 对应的 catch() 错误执行
3.Promise防止地狱回调
function myDirector(){
return new Promise((resolve,reject)=>{
$.ajax({
type:"get",
url:"json/director.json",
success(res){
resolve(res);
},
error(err){
reject(err);
}
})
})
}
function myFilm(id){
return new Promise((resolve,reject)=>{
$.ajax({
type:"get",
url:"json/"+id+".json",
success(res){
resolve(res)
},
error(err){
reject(err);
}
})
})
}
myDirector()
.then(res=>{
return myFilm(3)
})
.then(res=>{
console.log(res);
})
.catch(err=>{
console.log(err);
})
其中: return 的也是一个Promise,所以可直接用 .then();