JSFiddle - React, Tailwind, and code Playground

by int0h

HTML

<script src='https://cdnjs.cloudflare.com/ajax/libs/async/2.6.1/async.js'></script>

JavaScript

// mock:
function delayReturn(result) {
	return () => {
  	return new Promise(resolve => {
      setTimeout(() => resolve(result), 1000);
    });
 	}
}

DB = {
	GetAllScales: delayReturn([
  	{Name: 'Foo'},
    {Name: 'Bar'},
    {Name: 'Fuz'},
  ]),
  GetTypeScales: delayReturn('GetTypeScales')
};

// ---- your code: ----
(() => {

let arrAllScales = [];

async.series (
  [
    function (callback) {
      DB.GetAllScales().then((AllScales) => {
        arrAllScales = AllScales;
        callback (null, AllScales);
      })

    },
    function (callback) {
      var arr = [];
      var TypeScales = [];
      async.eachSeries (arrAllScales,  Scales => {
        var NameScales = Scales['Name'];
         DB.GetTypeScales(NameScales).then(ArrtypeScales => {
          var Obj = {};
          Obj.NameScales = NameScales;
          Obj.TypeScales = ArrtypeScales;
          arr.push(Obj);
          console.log(arr.length)
        })
      })
      callback (null, arr);
    },
  ],
  function (err, result) {
    console.log ('result: ', result, JSON.stringify(result));
  }
);

})();

// ---- fixed code: ----
(() => {

let arrAllScales = [];

async.series (
  [
    function (callback) {
      DB.GetAllScales().then((AllScales) => {
        arrAllScales = AllScales;
        callback (null, AllScales);
      })

    },
    function (callback) {
      var arr = [];
      var TypeScales = [];
      Promise.all(arrAllScales.map(Scales => {
      	var NameScales = Scales['Name'];
        return DB.GetTypeScales(NameScales).then(ArrtypeScales => {
          var Obj = {};
          Obj.NameScales = NameScales;
          Obj.TypeScales = ArrtypeScales;
          return Obj;
        });
      }))
      	.then(result => {
        	callback(null, result);
        });
    },
  ],
  function (err, result) {
    console.log ('fixed result: ', result, JSON.stringify(result));
  }
);

})();

// ---- async / await ----

(() => {

async function main() {
	const scales = await...