为什么
async function main1() {
try {
await new Promise(() => {
throw new Error('promise1 error')
})
} catch(e) {
console.log(e.message);
}
}
可以在catch中捕获错误
但是
function main1() {
try {
new Promise(() => {
throw new Error('promise1 error')
})
} catch(e) {
console.log(e.message);
}
}
就捕获不呢
Promise是链式调用。第一个使用了语法糖async和await,这就导致所有的动作都暂停,等待Promise完成后再执行后续。
第二个函数运行的时候。遇到Promise会启动一个新的微操作,而本函数已经运行完毕。
如果要捕捉Promise的错误。应该以下方式操作:
function main1() {
new Promise(() => {
throw new Error('promise1 error')
}).then((result)=> {
console.log(result);
}).catch((e)=>{
console.log(e.message);
});
}
不知道你这个问题是否已经解决, 如果还没有解决的话:catch通常用于最后统一捕获,我我们try catch一样
Error和eject都可以捕获
result.then(function(img){
// dosomthing
}).then(function(){
// dosomthing
}).catch(function(error){
console.log(error)
})