I have a function with nested for-loops and IF statements and one call of an asynchronous function. The structure looks similar to this:
search(){
// for loop 1
for (let i in object){
// IF statement 1
if (condition1){
// for loop 2
for (let o in object[i]){
// IF statement 2
if (condition2){
// call of an asynchronous function
this.asyncFunction().then( data => {
this.result.push(data)
});
}
}
}
}
}
I want to call one function (let’s say goToNextPage()
) as soon as all loops are done and all async-function calls are completed and, thus, my this.result
object is completed.
However, I don’t know how to manage this. I tried to work with counters, to know when the last object[i] is handled and when the last object[i][o] was handled to call goToNextPage()
afterwards. But this doesn’t work properly, if the last object fails one if statement. Then goToNextPage()
is called, while the async function of the second to last object is still running.
And I can’t just call goToNextPage()
within
this.asyncFunction().then( data => {
this.result.push(data)
// call it here, if last element is reached
});
since then it would not be called if the last element doesn’t meet one of the IF statements.
I hope it’s understandable what my problem is and that there is a solution for this…
Thank you for your time!