我使用异步库,特别是每个方法,但我没有得到预期的结果。
function instanceMethod (final_callback) {
obj = this;
async.parallel([
function (callback) {
getTopReplies (obj, function (err, result){
if (err) return callback(err);
if (result) {
obj.topReplies = result;
callback();
}
});
}
// ... theres actually more 2 functions here but
// I removed them for the sake of space and
// readability,
], function (err){
if (err) return final_callback(err, false);
return final_callback (false, true);
});
这是我从 async.parallel 函数列表中调用的函数
function getTopReplies (obj, callback) {
mongoose.model('Post').find({replyTo: obj._id, draft: false})
.limit(3).sort('-createdAt')
.exec(function(err, tops) {
if (err) return callback(err);
var result = [];
if (tops) {
async.eachSeries(tops, function(top, callback) {
result.push(top._id);
callback();
}, function (err){
if (err) return callback(err);
return callback(null, result);
});
}
});
}
有一种情况,结果应该返回数组中的两个顶部帖子 id,但它总是返回 1,或者如果对一个帖子只有 1 个顶部回复,它返回空。
我的代码有什么问题吗?
结果数组是否要在其他地方启动,例如每次都重新启动,调用每个函数还是什么?
谢谢!