У меня есть 3 функции , и я хочу выполнять их в фиксированном порядке (f1, f2, f3) . Я пробовал asyn c await и обещания, первый подход не сработал, а второй я не понял, наверное.
Первая функция подталкивает локальные пути к массиву с именем 'jsons' , вторая функция отправляет данные из путей в массив с именем 'profile', а третья функция отправляет массив 'profile' по URL-адресу. Я знаю, что это может быть не самый безопасный способ, но это всего лишь небольшой проект, чтобы лучше понять js.
function visualroute() {
const jsons = [];
const profile = [];
router.get('/user', verify, async (req, res) => {//here i want the data to be sent to
//Push array jsons
const checker = async function (){
sqldb.query(`SELECT * FROM ${username}`, (error, result) =>{
console.log('1');
if(error) {
console.log(error);
}
if( result.length == 0 ) {
console.log('User does not have initiated a db yet');
return res.render('user/index', {
message: 'No data added to db yet'
});
} else {
try{
//for loop to push the required info into jsons[]
for(i=0; i<result.length; i++){
jsons.push(`../public/jsonsheets/${result[i].infoticker}.json`);
}
console.log(jsons);
} catch(err){
throw err;
}
};//else end
});//checker end
}
//push array profile
const jsonreader = async function() {
console.log('2');
for(i=0; i<jsons.lenght; i++){
//Check if path exists
try {
fs.access(`public/jsonsheets/${jsons[i]}`, fs.F_OK, (err) => {
if (err) {
console.log('Does not exist');
return
}
console.log('Exists');
//exists: read it into profile[]
fs.readFile(`public/jsonsheets/${jsons[i]}`, (err, data) => {
if (err) throw err;
let userdata = JSON.parse(data);
profile.push(userdata);
});
})
} catch(err) {
console.log(err)
}
}//for loop end
console.log(profile);
}
// send data to url
const finalsender = async function() {
console.log('3');
res.send(
profile
);
}
async function quefunction(){
await checker();
await jsonreader();
await finalsender();
}
quefunction();
}); //route end
}; //visualroute end
visualroute();
мой результат: 2, 3, 1 и так далее пустой массив на адрес получателя.