【发布时间】:2017-04-04 02:50:49
【问题描述】:
我对使用 Bluebird 承诺相当陌生。我试图在发射器上使用它们。但是,我被困在如何处理错误上。
我有一个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 事件处理程序的回调中捕获错误的推荐方法是什么?现在如果发生任何错误,NodeJS 应用程序将崩溃并显示uncaughtException: Unexpected token *
【问题讨论】: