promise
为了解决回调函数嵌套问题,改为链式调用
1.链式调用,可以利用return,直接返回下一个then函数的参数,也可以返回promise对象,通过resolve控制下一个then函数的参数;
- 如果then里面有return,则就是链式调用,如果没有return,就是同时执行;
const p1=new Promise(function(resolve,reject){
setTimeout(function(){
resolve(1)
},3000)
});
p1.then(res=>{
col()
}).then(res=>{
colo()
return 1
}).then(res=>{
console.log(res)
})
function col(){
console.log(2222)
}
function colo(){
console.log(3333)
}
2.根据条件模拟返回正确和错误的结果
function demo(isErr){
return new Promise((resolve,reject)=>{
if(isErr){
resolve(3)
}else{
reject(4)
}
})
}
demo(false).then(res=>{
console.log(res)
}).catch(err=>{
console.log('错误')
});
3.在ES6的新语法中使用async和await代替链式调用,代码更加简洁,可读性更好
async function getData(el) {
try {
const res = await demo(el);
console.log(res);
} catch (error) {
console.log(error);
}
}
getData(false);