ブルーバードの約束を使用してかなり新しいです。私はそれらをエミッタ上で使用しようとしていました。しかし、私はエラーを処理する方法に固執しています。イベントエミッタでブルーバード約束
私はエミッタであるstream
オブジェクトを持っています。コードは以下の通りである -
return new Promise((resolve, reject) => {
var onDocFunc = doc => {
//JSON.parse('*');
// some logic goes in here to construct setStmt
bulk.find(query).upsert().update({$set: setStmt});
count++;
if (count % bulkSize == 0) {
stream.pause();
var execute = Promise.promisify(bulk.execute);
execute().catch(() => {}).then(() => {
stream.resume();
});
}
};
stream.on('data', onDocFunc);
stream.on('end',() => {
JSON.parse('*'); // how to catch errors that happen here??
var boundResolve = resolve.bind(this, {count: count});
if (count % bulkSize != 0) {
Promise.promisify(bulk.execute)().then(boundResolve).catch(boundResolve);
}
else {
boundResolve();
}
});
stream.on('error', err => {
reject(err);
});
})
私はend
イベントハンドラのコールバック内で発生したエラーをキャッチするために推奨される方法が何であるかを知りたいですか?何らかのエラーがuncaughtException: Unexpected token *
これはきれいに見えます。洞察に感謝します。これを覚えておいてください。 – hyades
'onDocFunc'の中で' JSON.parse'のような例外を処理しなければならない場合はどうしたらいいですか? – hyades
'try'-' catch 'ブロックを実行しますが、そこに 'JSON.parse'が必要であると私は確信していません。質問にあなたが実際に行っていることのコード全体を投稿できるのであれば、私は自分の答えを更新することができます。 – Bergi