
Jag skulle gjort en klass som håller "state" mellan anropen och sedan loopar
igenom arrayen en efter en och spar resultatet i samma array och sedan anropar
en callback när allt är klart.
Typsåhärnånting:
Kod: Markera allt
var directionsService = {
route: function(r,m) { m(); }
};
function calcDirectRoute(start,end, callback){
var request = {
};
var direction;
var duration;
directionsService.route(request,
function(response, status) {
if (1+1==2) {
duration = 110;
distance = 120;
callback({
duration: duration,
distance: distance
});
}
});
}
function lookup(items, callback) {
var self = this;
this.callback = callback;
this.items=items;
this.index=-1;
this.next = function() {
self.index++;
if( self.index < self.items.length )
{
var current = self.items[index];
calcDirectRoute(current.start, current.stop, function(result) {
current.result = result;
self.next();
});
}
else
{
self.callback(self.items);
}
};
this.next();
}
lookup([{start:10, stop:20}, {start:11, stop:21}, {start:12, stop:22}], function(results) {
console.log('All Done');
for(var i=0; i < results.length; i++)
console.log("result " + i + ", distance:" + results[i].result.distance + ", duration:" + results[i].result.duration);
});