Array get wrong position of data

I have the below function that in loop call other function but every time I run it I get the in wrong position data in array , maybe I have to wait to finish the forwardGeocode to finish and after the loop continues to next? if yes how I can make it?

  News() {
    this.restProvider.getNews()
    .then(data => {
       this.NewsDetails = data;
       this.date = this.NewsDetails[1].date;
       this.day = this.NewsDetails[1].day;
      for(let i=0;i<this.NewsDetails.length;i++){
        this.full_address = this.NewsDetails[i].address + ', ' + this.NewsDetails[i].town;
        this.forwardGeocode(this.full_address);
        console.log(this.full_address);
        
      }
    });
    console.log(this.full_address);

  forwardGeocode(keyword) 
  {
        this._GEOCODE.forwardGeocode(keyword)
        .then((coordinates : NativeGeocoderForwardResult[]) =>
        {
           let str : string   = `The coordinates are latitude=${coordinates[0].latitude} and longitude=${coordinates[0].longitude}`;
           //console.log(str);
           this.results       = str;
           this.cords.push(str);
           this.plat = coordinates[0].latitude;
           this.plong = coordinates[0].longitude;

           console.log(this.cords);
           console.log(this.mylat,this.plat,this.mylongt,this.plong,'alo4');

           this.calculateDistance(this.mylat,this.plat,this.mylongt,this.plong);

           
        })
        .catch((error: any) =>
        {
           console.log(error);
           
        });
     
  }
  }```

Yes you have to wait till forwardGeocode finished.
try this:

  async News() {
    this.restProvider.getNews()
    .then(asnyc(data) => {
       this.NewsDetails = data;
       this.date = this.NewsDetails[1].date;
       this.day = this.NewsDetails[1].day;
      for(let i=0;i<this.NewsDetails.length;i++){
        this.full_address = this.NewsDetails[i].address + ', ' + this.NewsDetails[i].town;
        await this.forwardGeocode(this.full_address);
        console.log(this.full_address);
        
      }
    });
}

  async forwardGeocode(keyword) 
  {
        this._GEOCODE.forwardGeocode(keyword)
        .then((coordinates : NativeGeocoderForwardResult[]) =>
        {
           let str : string   = `The coordinates are latitude=${coordinates[0].latitude} and longitude=${coordinates[0].longitude}`;
           //console.log(str);
           this.results       = str;
           this.cords.push(str);
           this.plat = coordinates[0].latitude;
           this.plong = coordinates[0].longitude;

           console.log(this.cords);
           console.log(this.mylat,this.plat,this.mylongt,this.plong,'alo4');

           this.calculateDistance(this.mylat,this.plat,this.mylongt,this.plong);

           
        })
        .catch((error: any) =>
        {
           console.log(error);
           
        });
  }```

@pupeter Thank you for the reply but I get error at

        await this.forwardGeocode(this.full_address);

‘await’ expression is only allowed within an async

@pupeter I manage to do it with your way but I still getting wrong results

you cannot use an await inside a for loop