I have the following snippet:
var request = require('request');
var randomNumber1 = 656;
var randomNumber2 = 879;
var dataCollected = []
function printNumberOfCollectedData() {
console.log('I collected ' + dataCollected.length + ' data so far.');
}
function getAsyncLoadedData(cb) {
request.get('https://api.bitfinex.com/v2/candles/trade:1m:tBTCUSD/hist?limit=1&end=1517158020000&duration=1800', function (err, res, body) {
if (err) {
//TODO: handle err
}
if (res.statusCode === 200) {
console.log(body)
cb(body)
} //etc
//TODO Do something with response
});
}
for (var n = 0; n < 1000; n++) {
if (n === randomNumber1) {
getAsyncLoadedData(function (data) {
dataCollected.push(data);
})
}
if (n === randomNumber2) {
printNumberOfCollectedData();
}
}
My problem is printNumberOfCollectedData should be called only after dataCollected.push(data); Basically, I want to freeze the for loop until getAsyncLoadedData's callback is called.