2017-02-02 31 views
3

我最近發現自己處於非常難以調試的情況。 想象一下下面的非常簡單的情況:NodeJS:在Promise和呼叫拒絕中自動捕獲錯誤

function somePromise() { 
    return new Promise((resolve, reject) => { 
     SomeModule.someMethod(); 
     AnotherModule.somePromise().then(resolve).catch(reject); 
    }); 
} 

決心從來沒有所謂,但我並沒有在控制檯得到一個錯誤 - 這是很難調試!
原來,我忘了要求SomeModule。在要求之後,代碼按預期工作。

有沒有辦法自動嘗試/捕獲我的代碼中的每個承諾與錯誤處理程序?我不想用try/catch塊來包圍我的Promises的正文,只是爲了能夠在將來更容易地找到這些錯誤。

在此先感謝您的意見!

回答

3

有沒有辦法自動嘗試/捕獲我的代碼中的每個承諾與錯誤處理程序?

這已經由Promise構造函數隱含地完成了。如果回調同步拋出異常,則承諾將被拒絕。

但是,你真的應該避免Promise constructor antipattern!使用

function somePromise() { 
    SomeModule.someMethod(); 
    return AnotherModule.somePromise(); 
} 
+0

這只是爲了簡化的目的,我做了一些更多的處理與承諾的結果證明「反模式」。 – CrushedPixel

+0

不,沒有反模式的理由。只需執行'.then(processing)',其中'processing'是一個接受承諾結果並計算新返回值的函數。處理過程中很可能的錯誤是您沒有收到任何錯誤消息的真正原因。 – Bergi

+0

他們不是,問題出在處理我自己承諾方法的方法的catch方法中。但謝謝你的意見。 – CrushedPixel

相關問題