2016-06-30 84 views
1

可以通过“unhandledrejection”承诺事件访问堆栈跟踪吗?访问未捕获的承诺拒绝错误堆栈

self.addEventListener("error", function(event) { 
 
console.log(event.error.stack) 
 
event.preventDefault() 
 
}) //works 
 

 
self.addEventListener("unhandledrejection", function(event) { 
 
console.log(event.error.stack) 
 
event.preventDefault() 
 
}) //fails 
 

 
Promise.reject()

回答

1

如果你传递一个错误的对象作为拒绝的理由,那么你就可以访问堆栈。

self.addEventListener("error", function(event) { 
    console.log(event.error.stack) 
    event.preventDefault() 
}) //works 

self.addEventListener("unhandledrejection", function(event) { 
    console.log(event.stack) 
    event.preventDefault() 
}) //works 

Promise.reject(
    new Error('rejected') // here's the magic 
)