2013-12-09 5 views
0

내 페이지에서 MaxMind를 사용하여 long/lat 사용자를 채우고 있습니다.지연시 javascript for 루프를 실행하십시오.

또한 haversine 수식이 포함 된 스크립트를 사용하여 사용자를 long/lat로 가져오고 저장 위치와 관련된 객체에 distance 매개 변수를 할당합니다.

거리가 저장되면 나는 유일한 것은 보여주는 좌표에 지연이 이후, 루프 바로 실행할 수 있다는 것입니다 다음 루프

for(i=0; i<cities.length; i++){ 
    var newLat = cities[i].lat; 
    var newLon = cities[i].lon; 
    getDistanceFromLatLonInKm(userLat,userLon,newLat,newLon); 
    var lowest = 1000 
    if(cities[i].distance< lowest){lowest = cities[i].distance} 
} 

    cities.sort(function(a, b) { 
    return a.distance - b.distance; 
    })[0] 
     var div = document.getElementById('test'); 
      if(cities[0].fax == null){ 
       div.innerHTML = div.innerHTML + cities[0].street + '<br />' + cities[0].city + '<br />' + cities[0].postal + '<br /><b>Phone:</b>' + cities[0].phone; 
      }else{div.innerHTML = div.innerHTML + cities[0].street + '<br />' + cities[0].city + '<br />' + cities[0].postal + '<br /><b>Phone:</b>' + cities[0].phone + '<br /><b>Fax:</b>' + cities[0].fax; 

      } 

를 실행하려면. 좌표를 채운 후에이 루프를 실행하려면 어떻게해야합니까?

+0

위도와 경도를 사용하는 코드를 공유 할 수 있습니까? 위도를 얻는 기능 안에서 for 루프를 감싸는 구조를 만들 수 있습니다. lat 및 long = 실제 값이면 {for loop} –

답변

1

당신은

setTimeout(function() { yourCode... }, 5000); 

는 그러나, 거의 적절한 솔루션입니다, 예를 들면 : setTimeout 기능을 사용할 수 있습니다. 대신 데이터 소스의 API를 살펴 봐야합니다. 콜백 함수를 사용하여 사용 가능한 데이터를 알리는 데 사용할 수 있습니다. 그것은 데이터를 기다리는 적절한 방법입니다. 그런 방법이 없다면 setTimeout을 사용해야합니다 (실제로 지연된 코드에 들어갈 때 데이터를 사용할 수없는 경우 다시 호출하십시오).

+0

문서를 살펴 보겠습니다. 이것은 내가 필요로하는 것에 대해 훌륭하게 작동합니다. 감사! –