仅供参考:这是伪代码,因为真实代码非常大。
我有一个函数 main()。Main 有一个回调,应该发送一个在 mongodb 中找到的结果数组。例如,main 将被发送一个 URL 数组,并且应该将每个 URL 保存在 Mongo 中的回调信息发送到它的回调。基本上是一组对象。
我的问题是一切都是异步的,主要是多次调用它的回调。
有人对使功能同步有什么建议吗?
var db = require('moongoose');
mongoose.connect(__config.db.connect);
Schema = mongoose.Schema;
var scrapeSchema = require('./scrape.schema');
var Scrape = mongoose.model('Scrape', scrapeSchema);
function findResultWithParams(findParams, select, callback) {
Schema.find(findParams).sort('-timestamp').select(select).exec(function (err, found) {
if (err) return handleError(err);
callback(err, found[0]);
});
}
function main(array, callback) {
var results = [];
var addToResults = function(err, found) {
results.push(found);
if(results.length >= array.length) callback(err, results);
}
for(var i = 0; i < array.length; i++)
{
findResultWithParams({ _id: array[0]._id }, '', function (err, foundArray)
{
if (!foundArray || foundArray.length <= 0 || isTooOld(foundArray[0].timestamp, msg.header.maxResponseAge)) {
console.log('findResultWithParams Return false');
callback(err, false);
} else {
console.log('findResultWithParams ok');
addToResults(err, foundArray[0]);
}
});
};
}