我正在使用 node/express/mongoose 构建一个站点,它在查看提交时需要执行以下操作。
我遇到的问题是以非串行方式进行数据库获取。例如,我将执行一些调用来获取一些数据,但有些调用可能要等到执行上下文转到另一个调用才会完成。尝试使用 npm 模块 async,但在试图弄清楚如何集成它时遇到了麻烦。
这是我的代码:
var getViewCount = function(submissionId) {
Submission.getSubmissionViewCount({
submissionId : submissionId
}, function(err, count) {
if (err) {
throw err;
}
if (count) {
return count;
}
});
};
var getVotes = function(submissionId) {
console.log('getvotes');
Submission.getSubmissionVotes({
submissionId : submissionId
}, function(err, votes) {
return votes;
});
};
var getSubmission = function(id) {
Submission.getSubmission({
id : id
}, function(err, submission) {
if (err) {
throw err;
}
if (submission) {
return submission;
}
});
};
var renderSubmission = function(title, submission, views) {
res.render('submission', {
title: submission.title + ' -',
submission: submission,
views: views.length
});
};
我如何将它与异步一起使用?或者我应该使用async.series
isstead ofasync.async
吗?
async.series([
function(callback) {
var submission = getSubmission(id);
callback(null, submission);
},
function(callback) {
// getViewCount(submissionId);
},
function(callback) {
// getVotes(submissionId);
},
function(callback) {
//renderSubmission(title, submission, views);
}
], function(err, results) {
console.log(results);
});
基本上我想先获取意见和投票,然后提交我的提交。