Skip to content Skip to sidebar Skip to footer

Identify When Nested FOR Loops And IF Statement With One Asynchronous Function Call Are Done

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

Solution 1:

Koleman answered this perfectly on the official Ionic forum and thereby helped me with the solution: Link

His approach is to insert promises in the structure and to use Promise.all(promises).then(...) to wait until all promises are resolved.

search(){
   let promises = [];
    // 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){
                    let promise = new Promise((resolve, reject) => { 
                        this.asyncFunction().then( data => resolve(data)); 
                    });
                    promises.push(promise); 
                }
            }
        }
    }

    return new Promise((resolve, reject) => {
        if(!promises.length){
            reject('Something went worng!');
        }else{
            Promise.all(promises).then((results) => {
                this.result = this.result.concat(results);
                resolve('We done it!');
            });
        }        
    });         
  }

  search().then(
    successText => {
        console.log(statusText);
        console.log(this.result);
    },
    failText => {
        console.log(failText);
    }
  );

Post a Comment for "Identify When Nested FOR Loops And IF Statement With One Asynchronous Function Call Are Done"