这是我的代码 -
function lastCB(err) {
if(err) {
console.log(err);
}
if(errFlag) {
res.send({"Message": "Some error occured"});
} else {
res.send({"Message" : "Success"})
}
};
updateabcd: function(req, res, next) {
var Data = req.data;
var errFlag = 0;
function update(row,callback) {
something.updateit(row,function(err,result){
if(err) {
errFlag = 1;
//error from DB
}
callback();
});
};
async.eachLimit(Data, 1, update, lastCB);
我想要实现的是调用eachLimit的lastCB,如果err出现在更新函数内部,即使ecahLimit位于数组之间。
答案 0 :(得分:0)
这是您的更新功能的样子:
function update(row,callback) {
something.updateit(row,function(err,result){
if(err) {
errFlag = 1;
//error from DB
callback(err);
} else {
callback();
}
});
};
如果出现错误,您仍然必须调用回调函数,但在这种情况下,您应该将错误对象传递给它。当异步检测到错误对象被传递给它时,它将停止迭代并立即调用你的lastCB函数。
在上面的例子中,我刚刚传递了something.updateit函数返回的错误对象。但在某些情况下,您可能需要创建一个新的错误对象并将其传递给回调。这是一个例子:
function update(row,callback) {
something.updateit(row,function(err,result){
if(err) {
errFlag = 1;
//error from DB
callback(err);
} else {
if (result.badData) {
callback(new Error('Invalid data received from the database'));
} else {
callback();
}
}
});
};