Hi!
I’m getting a list of results from a GET request, and then I want to perform an async task on each one, so I used caolan/async for that.
But I got problems using Future to wait the async processing
const Future = Npm.require('fibers/future');
let mapResults = [];
let future = new Future();
HTTP.get(url,(err,res)=>{
if(err){
future.throw(error);
}else{
let results = JSON.parse(res.content).results;
async.forEachOfSeries(results,(place,key,next)=>{
let resultId = place.place_id;
let venue = Venue.findOne({resultId:resultId});
if( _.isEmpty(venue) ){
Meteor.call('createVenue',
place.name,
resultId,
category,
place.geometry.location.lat,
place.geometry.location.lng,
(err,venue)=>{
if(err){
return next(err)
}
mapResults.push(venue)
return next();
}
);
future.wait();
}else{
//Here is the problem, throws me
// Can't wait without a fiber
mapResults.push(venue);
return next();
}
},(err)=>{
if(err){
throw new Meteor.Error(err)
}
future.return(mapResults);
})
}
})
return future.wait();