Javascript 在map函数完成时实现回调?
我对Javascript相当陌生。我不理解所有这些不同的异步库 我希望在所有计算完成后执行回调。目前,它按原样(空)发送最终确定的查询对象,而不使用插入的新数据。如何强制它将数据插入并调用回调 (当前使用异步瀑布库) 我目前有以下情况:Javascript 在map函数完成时实现回调?,javascript,node.js,Javascript,Node.js,我对Javascript相当陌生。我不理解所有这些不同的异步库 我希望在所有计算完成后执行回调。目前,它按原样(空)发送最终确定的查询对象,而不使用插入的新数据。如何强制它将数据插入并调用回调 (当前使用异步瀑布库) 我目前有以下情况: function gather(res, matching_businesses) { waterfall([ function(callback){ let finalized_restaurant_query = { restaurants
function gather(res, matching_businesses) {
waterfall([
function(callback){
let finalized_restaurant_query = {
restaurants : { }
}
MongoClient.connect("mongodb://localhost:27017/restaurants", function(err, db) {
matching_businesses.map((e => {
if(err) { return console.dir(err); }
let business_name = e['name']
//Get the collection that all the data exists within
const collection = db.collection('restaurant_meta_data');
//Map over the Yelp data for the restaurants and cross-ref a match
let regex_search = new RegExp(".*" + business_name + ".*", 'i')
//Map over each item and push into associated restaurants menu
collection.find({"name": {'$regex': regex_search} })
.toArray(function(err, item) {
try {
if (finalized_restaurant_query['restaurants'][business_name] == undefined) {
finalized_restaurant_query['restaurants'][business_name] = {
image: item[0]['logo'],
items: [] //House individual restaurant menu items
}
} else {
finalized_restaurant_query['restaurants'][business_name]['items'].push(item)
}
} catch(err) {
console.log('err on ', business_name)
console.log(item)
}
});
})
});
callback(null, finalized_restaurant_query);
},
function(arg1, callback){
console.log(arg1)
callback(null, arg1);
}
], function (err, result) {
return res.json(result);
});
}
希望对你有帮助
function gather(res, matching_businesses) {
waterfall([
function(callback){
let finalized_restaurant_query = {
restaurants : { }
}
MongoClient.connect("mongodb://localhost:27017/restaurants", function(err, db) {
matching_businesses.map((e => {
if(err) {
console.dir(err);
return callback(err, {});
}
let business_name = e['name']
//Get the collection that all the data exists within
const collection = db.collection('restaurant_meta_data');
//Map over the Yelp data for the restaurants and cross-ref a match
let regex_search = new RegExp(".*" + business_name + ".*", 'i')
//Map over each item and push into associated restaurants menu
collection.find({"name": {'$regex': regex_search} })
.toArray(function(err, items) {
try {
if (finalized_restaurant_query['restaurants'][business_name] == undefined) {
finalized_restaurant_query['restaurants'][business_name] = {
image: items[0]['logo'],
items: [] //House individual restaurant menu items
}
} else {
finalized_restaurant_query['restaurants'][business_name]['items'].push(items)
callback(null, finalized_restaurant_query);
}
} catch(err) {
console.log('err on ', business_name)
console.log(item)
callback(err, {});
}
});
});
});
});
},
function(arg1, callback){
console.log(arg1)
callback(null, arg1);
}
], function (err, result) {
if (err){
return res.json({});
}
return res.json(result);
});
}