我对使用蓝鸟承诺是相当新的。我试图在发射器上使用它们。但是,我坚持如何处理错误。蓝鸟承诺与事件发射器
我有一个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
然后尝试''''''catch'块,虽然我不确定你真的*需要*那里的'JSON.parse'。如果你可以发布你在问题中的实际代码,我可以更新我的答案。 – Bergi