Геокодер внутри цикла в Javascript

#javascript #loops #for-loop #geocoder

Вопрос:

Я играю с API Google maps и пытался ввести массив почтовых индексов и нарисовать линии на карте между каждым местоположением. Проблема, с которой я сталкиваюсь, заключается в том, что из-за асинхронного поведения линии рисуются не в правильном порядке и каждый раз отличаются. Есть ли простой способ отредактировать этот код, чтобы геокодер прошел полный цикл, прежде чем сделать следующий запрос?

 const geocoder = new google.maps.Geocoder();

    for(let i = 0; i < array1.length; i  ){

        geocoder.geocode( { address: array1[i]}, function(results, status) {
              
        if (status == 'OK') {
            markers.push(results[0].geometry.location);
            
            
            if(markers.length > 0){
            const line = new google.maps.Polyline({
                path: [
                    markers[i-1],
                    markers[i],
                ],
                    strokeOpacity: 0,
                    icons: [{
                            icon: lineSymbol,
                            offset: "0",
                            repeat: "20px",
                          },
                ],
                map: map,
              });
            }
        
        var marker = new google.maps.Marker({
            map: map,
            position: results[0].geometry.location
        });
      } else {
        alert('Geocode was not successful for the following reason: '   status);
      }
      
    });
    }