2
在繼承EventEmitter的類中,我們通常有兩個點來處理錯誤。處理來自EventEmitter的錯誤
someClass.on('error', function eventEmitterCallback(err){/* handle error*/});
//and
someClass.someAsyncAction(function asyncActionCallback(err){/* handle error*/})
我們不知道,哪裏出現錯誤,什麼樣的回調會執行。 例如,tedious(MS SQL Server的模塊):
- 密碼不正確:兩個回調
- 不正確的數據庫名稱:僅
eventEmitterCallback
;someAsyncAction
執行沒有錯誤 - 不正確的主機:只有
someAsyncAction
主機
- Icorrect格式IP(例如
1234.10.0.1
):node.js的恰倒沒有任何錯誤:)
我想創建一個簡單的函數將從模塊到回調的第一個參數的所有錯誤。
function getSomeStuffFromDb(callback) {
var connection = new dbConnection(options);
connection.on('error', callback);
connection.connect(function(err) {
if (err) return callback(err);
/*exec SQL query*/
}
}
當然,如果出現任何錯誤,我只想執行一次回調。我該怎麼做?如何正確地結合兩個錯誤處理點之一?也許如果在我的課上我使用繼承EventEmmiter的類,我還需要從EventEmitter獲取我的類。