我對使用藍鳥承諾是相當新的。我試圖在發射器上使用它們。但是,我堅持如何處理錯誤。藍鳥承諾與事件發射器
我有一個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