在我的函数中,由于回调已被调用,因此出现错误。我不确定为什么会出现此问题,因为我没有在async.forEachSeries中调用回调。
var invalid = true;
async.forEachSeries(book.titles, function (title, titleCallback) {
authorizeContext(permission,contextSet, book.bookId, function (error, validContext) {
if (error) {
isvalid = false;
titleCallback("User is not authorized");
} else if (validContext) {
logger.info("user is authorized")
isvalid = true;
titleCallback(null);
} else {
logger.info("c");
isvalid = false;
titleCallback("User is not authorized");
}
});
}, function (err) {
if (err && isvalid) {
logger.info("inside error"+JSON.stringify(err));
callback(err, null)
} else {
logger.info("inside result"+isvalid);
callback(null, isvalid)
}
});
答案 0 :(得分:0)
上面的方法是正确的,并且在回调中没有问题。问题出在名为authorizeContext()的方法中。该方法正在foreach循环下进行异步调用,因此用async.foreach代替foreach循环对我有用。