I need some help with javascript loop over fetch api.
First I make a call to get projects by user and store then in projetosList
.
Until here works fine.
But when I loop over projetosList
to fetch schedules info in listarSchedules
function, doesn't works.
Javascript shouts out to me: SyntaxError: await is only valid in async functions, async generators and modules.
I've tried every combination of async-wait except the correct one :(
let urlProjetos = "https://gitlab.com/api/v4/projects?archived=false&private_token=glpat-xx";
let projetosList = [];
function getData(url) {
return new Promise((resolve, reject)=>{
fetch(url)
.then((resp)=>resp.json())
.then((data)=>{
return resolve(data);
})
});
}
function imprimirProjetos(allUserData) {
allUserData.forEach((requestPage)=>{
requestPage.forEach((requestItem)=>{
let id_nome = requestItem.id + "#" + requestItem.name;
projetosList.push(id_nome);
console.log(id_nome);
});
});
}
function listarMeusProjetos() {
let meuId = 123456;
let urlMeusProjetos = "https://gitlab.com/api/v4/users/" + meuId + "/projects?private_token=glpat-xx";
let userRequests = [];
userRequests.push(getData(urlMeusProjetos));
Promise.all(userRequests).then((allUserData)=>{
imprimirProjetos(allUserData);
});
}
listarMeusProjetos();
// ULTIL HERE WORKS OK
function imprimirSchedule(allUserData) {
console.log(allUserData);
}
// PROBLEM!!!!
async function listarSchedules() {
let userRequest = null;
let allUserData = [];
let allPromessas = [];
projetosList.forEach((item)=>{
let projetoId = item.split("#")[0];
let projetoNome = item.split("#")[1];
console.log("PROJETO ID: " + projetoId + " PROJETO NOME: " + projetoNome);
let urlSchedule = "https://gitlab.com/api/v4/projects/" + projetoId + "/pipeline_schedules?private_token=glpat-uSjCXDMEZPh5x6fChMxs";
console.log("urlSchedule");
console.log(urlSchedule);
userRequest = (getData(urlSchedule))
await userRequest.then((data)=>{
let str = projetoId + "#" + data.description + "#" + data.owner.username;
allUserData.push(str)
})
});
imprimirSchedule(allUserData)
}
listarSchedules().then(()=>console.log("DONE"));
Thanks.