JSFiddle - React, Tailwind, and code Playground

by Egli

HTML

<textarea id="some-text-area" rows="20" cols="30"></textarea>

JavaScript

//example array to loop.
var outerQuery= ['A', 'B', 'C', 'D', 'E', 'F'];
var outerQueryLegth = outerQuery.length;
var innerQuery= ['1', '2', '3', '4', '5', '6'];
var innerQueryLegth = innerQuery.length;

//the textarea where im going to print the results in order later to open in excel as a .csv file
var $csvText= $('#some-text-area');


Promise.all(outerQuery.map(function(outer) {
   return GoogleAnalyticsAPI(outer);
})).then(function(results) {
   $csvText.append(results.map(function(outer) {
        return outer.column1;
        
        Promise.all(innerQuery.map(function(inner) {
           return GoogleAnalyticsAPI(inner);
        })).then(function(results) {
           $csvText.append(results.map(function(inner) {
                return inner.column1;
           }));       
        });
        
   }));       
});
/*

Promise.all(outerQuery.map(function(outer) {
   return GoogleAnalyticsAPI(outer);
})).then(function(response) {
   $csvText.append(response.map(function(outer) {
        return response.column1;
   }).join('\r\n'));       
});
*/
/*
$.each(outerQuery, function(outerIndex, outer){
      //Print the row
      $csvText.append('Row' + outer +'\r\n\r\n');
      
      //Nested inner loop
      innerQuery.reduce(function(innerCallback, inner, innerIndex){
        return innerCallback.then(function(){
        	return GoogleAnalyticsAPI(inner).then(function(response){
            $csvText.append(response.column1 +',');
          });
        });//end inner callback
      },Promise.resolve());
});
*/


function GoogleAnalyticsAPI(val) {
	return new Promise(function(resolve) {
    setTimeout(function() {
      resolve({column1: val });
    }, Math.floor((Math.random() * 1000) + 1));
  });
}

function GoogleAnalyticsAPI2(outer) {
	return new Promise(function(resolve) {
    setTimeout(function() {
      resolve(outer);
    }, Math.floor((Math.random() * 1000) + 1));
  });
}
/*
//inserting the csv headers
$csvText.val('Column1, Column2\r\n');
//reducing all...