es6中引进了async await处理异步,我们可以在async函数中使用await使得异步函数或者promise同步化,那当我们在async函数中await了一个reject的promise的时候,async函数接下来的内容则会被跳过,如果是resolve的话,却不会这样,这真是有趣
let count = ()=>{
return new Promise((resolve,reject)=>{
reject(3);
});
}
let count2 = ()=>{
return new Promise((resolve, reject)=>{
resolve(4);
})
}
async function test(){
let c = await count();
let d = await count2();
return 5;
}
test().then((data)=>{
console.log(data);
}).catch((data)=>{
console.log(data);
})
比如这段代码,他就会输出3
假如没有await,则会继续执行,虽然最后浏览器控制台会提示你没有catch到这个reject,比如下面这段代码会输出5
async function test(){
new Promise((resolve,reject)=>{reject(3);});
//let c = await count();
let d = await count2();
return 5;
}
test().then((data)=>{
console.log(data);
}).catch((data)=>{
console.log(data);
})
那换句话说,resolve并不会阻止async函数继续执行下去。