EventEmitterを継承するクラスでは、通常、エラーを処理するための2つのポイントがあります。
someClass.on('error', function eventEmitterCallback(err){/* handle error*/});
//and
someClass.someAsyncAction(function asyncActionCallback(err){/* handle error*/})
エラーが発生する可能性のある場所と、実行されるコールバックはわかりません。たとえば、面倒です(MS SQL Serverのモジュール):
- パスワードが正しくありません:両方のコールバック
- 不正なデータベース名:のみ
eventEmitterCallback
;someAsyncAction
エラーなしで実行 - 不正なホスト:のみ
someAsyncAction
- ホスト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*/
}
}
もちろん、エラーの原因があれば、コールバックを1回だけ実行したいのですが、どうすればよいですか?2つのエラー処理ポイントを1つにどの程度正しく結合しますか?たぶん、私のクラスでEventEmmiterを継承するクラスを使用する場合、EventEmitterからもクラスを継承する必要があります。