Estoy tratando de usar una llamada asíncrona, sin embargo, cada vez que coloco la palabra de comando de espera, el script no se ejecuta. Cualquier sugerencia se acepta con gratitud.
código alternativo en la parte inferior basado en el comentario proporcionado
async function masterDeploy(PrimaryControl){ //2. Collect learning event dates from programme LearnEvents = progLearnerEvent(progGuid) .then(LearnEvents =>{ console.log(LearnEvents) for (var b = 0; b < LearnEvents.length; b++) { retLearnEvents(LearnEvents[b],progGuid,b) //need to wait for these results before moving to next loop, code does not run if await placed at beginning of this line console.log(FlightPlanArray) learnEventsArrComb.push(FlightPlanArray) console.log(learnEventsArrComb) } return learnEventsArrComb }) .then(learnEventsArrComb => { console.log(learnEventsArrComb) }) .catch(error => {DisplayError(error)} );la alternativa comienza aquí
LearnEvents = progLearnerEvent(progGuid) await (LearnEvents =>{ //.then(LearnEvents =>{ console.log(LearnEvents) for (var b = 0; b < LearnEvents.length; b++) { await retLearnEvents(LearnEvents[b],progGuid,b) //need to wait for these results before moving to next loop, code does not run if placed at beginning of this line console.log(FlightPlanArray) learnEventsArrComb.push(FlightPlanArray) console.log(learnEventsArrComb) } return learnEventsArrComb }) //.then(learnEventsArrComb => { // console.log(learnEventsArrComb) //}) //.catch(error => // {DisplayError(error)} //); }puedes hacerlo así:
const masterDeploy = async (PrimaryControl) =>{ //2. Collect learning event dates from programme LearnEvents = await progLearnerEvent(progGuid) .then(LearnEvents =>{ console.log(LearnEvents) for (var b = 0; b < LearnEvents.length; b++) { await retLearnEvents(LearnEvents[b],progGuid,b) //need to wait for these results before moving to next loop, code does not run if await placed at beginning of this line console.log(FlightPlanArray) learnEventsArrComb.push(FlightPlanArray) console.log(learnEventsArrComb) } return learnEventsArrComb }) .then(learnEventsArrComb => { console.log(learnEventsArrComb) }) .catch(error => {DisplayError(error)} );prueba esto en su lugar...
Debe agregar await cuando llame a masterDeploy func
function main(){ await masterDeploy(info) }Además, recomiendo hacer estos cambios en su código:
async function masterDeploy(PrimaryControl){ //2. Collect learning event dates from programme try{ const LearnEvents = await progLearnerEvent(progGuid) console.log(LearnEvents) for (let b = 0; b < LearnEvents.length; b++) { retLearnEvents(LearnEvents[b],progGuid,b) //need to wait for these results before moving to next loop, code does not run if await placed at beginning of this line console.log(FlightPlanArray) learnEventsArrComb.push(FlightPlanArray) console.log(learnEventsArrComb) } } catch(error){ DisplayError(error) } }