JSFiddle - React, Tailwind, and code Playground
by moob
JavaScript
var results = [
{legs:[
{a:"a",b:"b",c:"c"},
{a:"d",b:"e",c:"f"},
{a:"g",b:"h",c:"i"}
]
},
{legs:[
{a:"j",b:"k",c:"l"},
{a:"m",b:"n",c:"o"},
{a:"p",b:"q",c:"r"}
]
},
{legs:[
{a:"s",b:"t",c:"u"},
{a:"v",b:"w",c:"x"},
{a:"y",b:"z",c:"-"}
]
}
];
(function attachTransitStepper(){
/* attaches stepGetTransit function to each result object (we'll call it later) */
for (var r in results) {
if (results.hasOwnProperty(r)) {
var result = results[r];
result.stepGetTransit = function(){
//when called, this function loops through the legs of this journey getting transit data from each
var zis = this,
legs = zis.legs,
iteration = zis.iteration || 0;
console.log("zis",zis);
console.log("iteration",iteration);
console.log("legs",legs);
if(legs && iteration < legs.length){
var leg = legs[iteration];
setTimeout(function(){base.getTransit(leg, function(){zis.stepGetTransit();});},100);//slowed down OVER_QUERY_LIMIT
}
iteration++;
zis.iteration = iteration;
};
}
}
})();
var step = 0,
len = results.length;
(function triggerEachTransitStepperInTurn(){
if (results && step < len) {
var result = results[step];
console.log("step",step);
setTimeout(function(){result.stepGetTransit(); step++; triggerEachTransitStepperInTurn();},(step*10));//slowed down OVER_QUERY_LIMIT
}
})();
var base = {};
base.getTransit = function(leg, callback) {
console.log("get transit",leg);
if(typeof(callback) == "function"){
console.log("callback");
callback();
}
};