2016-05-05 216 views
0

我以前的錯誤處理功能:堆棧跟蹤錯誤處理程序,並承諾錯誤處理程序

function onError(message, source, lineno, colno, error) { sendRequestToSendMail(arguments) } 
window.onerror = onError 

我也承諾異步任務,我想趕上他們的異常。我不需要重複自己喜歡的:

doSomething1() 
    .then(doSomething2(), onError) 
    .then(doSomething3(), onError) 
    .then(doSomething4(), onError) 

如何爲所有承諾(如window.onError)實現全局錯誤處理程序?

回答

1

它不是一個全局錯誤處理程序(對我來說聽起來不是個好主意),但由於錯誤是通過promise鏈傳播的,所以可以通過添加代碼來縮短代碼(並消除重複)最後.catch()語句將鏈:

doSomething1() 
    .then(doSomething2()) 
    .then(doSomething3()) 
    .then(doSomething4()) 
    .catch(onError) 

這會趕上任何的doSomething*功能引發的任何拒絕。