Javascript es6承诺:承诺中抛出的异常不会被catch方法捕获
下面的代码Javascript es6承诺:承诺中抛出的异常不会被catch方法捕获,javascript,promise,es6-promise,Javascript,Promise,Es6 Promise,下面的代码 const run=async()=>{ 试一试{ const p=Promise.reject() p、 catch(()=>console.log('exception capted')) 等待p console.log('流已完成') }抓住{ console.log('流中断') } } run()你在那里分叉你的链条。(哇,听起来很奇怪…) 您正在做与此等效的操作: const p = Promise.reject(); p.catch(...); p.catch(...
const run=async()=>{
试一试{
const p=Promise.reject()
p、 catch(()=>console.log('exception capted'))
等待p
console.log('流已完成')
}抓住{
console.log('流中断')
}
}
run()
你在那里分叉你的链条。(哇,听起来很奇怪…)
您正在做与此等效的操作:
const p = Promise.reject();
p.catch(...);
p.catch(...);
这是承诺链中的两个分开的叉,它们将被单独捕获p
被拒绝,p.catch
为p.catch
之后的任何内容恢复它。任何未链接到p.catch
的内容都会被p
单独拒绝。既然你等待p,你就不在链条的叉上了
p
被拒绝并触发任何和所有附加的catch
处理程序,其中可以有多个处理程序<另一方面,code>p.catch(…)会返回一个新的成功承诺。从概念上更好地理解这一点的方法是询问您在等待什么:在第一种情况下,您等待拒绝,在另一种情况下,您等待捕获。更好地说,在另一种情况下,您等待catch
返回的承诺…