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...