geocoder.addressSearch(addra[i], function(result, status) { 에 관한 질문입니다 부탁드립니다 ㅠㅠ

var mapContainer = document.getElementById('map'), // 지도를 표시할 div 
    mapOption = {
        center: new kakao.maps.LatLng(33.450701, 126.570667), // 지도의 중심좌표
        level: 6 // 지도의 확대 레벨
    };  

// 지도를 생성합니다    
var map = new kakao.maps.Map(mapContainer, mapOption); 

//일반 지도와 스카이뷰로 지도 타입을 전환할 수 있는 지도타입 컨트롤을 생성합니다
var mapTypeControl = new kakao.maps.MapTypeControl();

// 지도에 컨트롤을 추가해야 지도위에 표시됩니다
// kakao.maps.ControlPosition은 컨트롤이 표시될 위치를 정의하는데 TOPRIGHT는 오른쪽 위를 의미합니다
map.addControl(mapTypeControl, kakao.maps.ControlPosition.TOPRIGHT);

// 지도 확대 축소를 제어할 수 있는  줌 컨트롤을 생성합니다
var zoomControl = new kakao.maps.ZoomControl();
map.addControl(zoomControl, kakao.maps.ControlPosition.RIGHT);
// 주소-좌표 변환 객체를 생성합니다

var geocoder = new kakao.maps.services.Geocoder();
var cnt=0;
// 주소로 좌표를 검색합니다
var addra=["서울 강남구 양재대로 333","서울 강남구 도산대로 403","서울 서초구 강남대로 475"];
for(var i=0; i<addra.length; i++){
	console.log(addr[i]);
	
geocoder.addressSearch(addra[i], function(result, status) {
	console.log(result[0]);
	//alert(i);
    // 정상적으로 검색이 완료됐으면  
     if (status === kakao.maps.services.Status.OK) {
    		console.log("addr:"+addr[i]);
			
        var coords = new kakao.maps.LatLng(result[0].y, result[0].x);
        //alert(coords);
        var redstar1 = '../image/redstar1.png'; // 마커이미지의 주소입니다
        var redstar2 = '../image/redstar2.png'; // 마커이미지의 주소입니다
        var redstar3 = '../image/redstar3.png'; // 마커이미지의 주소입니다
        var bluestar1 = '../image/bluestar1.png'; // 마커이미지의 주소입니다
        var bluestar2 = '../image/bluestar2.png'; // 마커이미지의 주소입니다
        var bluestar3 = '../image/bluestar3.png'; // 마커이미지의 주소입니다
        var avgstar = '../image/avgstar.png';
        var imageSize = new kakao.maps.Size(45, 45); // 마커이미지의 크기입니다
        var imageOption = {offset: new kakao.maps.Point(27, 69)}; // 마커이미지의 옵션입니다. 마커의 좌표와 일치시킬 이미지 안에서의 좌표를 설정합니다.
        if(searchprice[cnt]>=veryveryveryhighprice)
        {
        	var markerImage = new kakao.maps.MarkerImage(redstar1, imageSize, imageOption);
        	console.log("searchprice:"+searchprice[cnt]+"vvvhp:"+veryveryveryhighprice);
        }
        else if(searchprice[cnt]>=veryveryhighprice && searchprice[cnt]<veryveryveryhighprice)
        {
        	var markerImage = new kakao.maps.MarkerImage(redstar2, imageSize, imageOption);
        	console.log("searchprice:"+searchprice[cnt]+"vvhp:"+veryveryhighprice);
        }
        else if(searchprice[cnt]>=veryhighprice && searchprice[cnt]<veryveryhighprice)
        {
        	var markerImage = new kakao.maps.MarkerImage(redstar3, imageSize, imageOption);
        	console.log("searchprice:"+searchprice[cnt]+"vhp:"+veryhighprice);
        }else if(searchprice[cnt]>=avgprice && searchprice[cnt]<veryhighprice)
        {
        	var markerImage = new kakao.maps.MarkerImage(avgstar, imageSize, imageOption);
        	console.log("searchprice:"+searchprice[cnt]+"avgprice:"+avgprice);
        }
        else if(searchprice[cnt]<avgprice && searchprice[cnt]>=verylowprice)
        {
        	var markerImage = new kakao.maps.MarkerImage(avgstar, imageSize, imageOption);
        	console.log("searchprice:"+searchprice[cnt]+"avgprice:"+avgprice);	
        }
        else if(searchprice[cnt]<verylowprice && searchprice[cnt]>=veryverylowprice)
        {
        	var markerImage = new kakao.maps.MarkerImage(bluestar1, imageSize, imageOption);
        	console.log("searchprice:"+searchprice[cnt]+"vlp:"+verylowprice);
        }
        else if(searchprice[cnt]<veryverylowprice && searchprice[cnt]>=veryveryverylowprice){
        	var markerImage = new kakao.maps.MarkerImage(bluestar2, imageSize, imageOption);
        	console.log("searchprice:"+searchprice[cnt]+"vvlp:"+veryverylowprice);
        }
        else if(searchprice[cnt]<veryveryverylowprice){
        	var markerImage = new kakao.maps.MarkerImage(bluestar3, imageSize, imageOption);
        	console.log("searchprice:"+searchprice[cnt]+"vvvlp:"+veryveryverylowprice);
        }
        
        // 결과값으로 받은 위치를 마커로 표시합니다
        console.log("집이름:"+searchhome_name[cnt]);
		console.log("지역:"+addr[cnt]);
		
		
         var marker = new kakao.maps.Marker({
            map: map,
            position: coords,
            image:markerImage
        });
        var cc = cnt;
      	kakao.maps.event.addListener(marker, 'click', function() {
              // 이곳에 작성하면 됩니다.
              // 여기서 infoWindow.getContent() 로 내용을 가져올 수 있습니다.
               location.href="content.do?num="+num[cc]; 
          }); 

        // 인포윈도우로 장소에 대한 설명을 표시합니다
		 for(j=0;j<searchhome_name.length;j++){
        if(cnt==j){
        var infowindow = new kakao.maps.InfoWindow({
            content: '<div id="home_name" style="width:150px;text-align:center;padding:6px 0;">'+searchhome_name[j]+'</div>'
        });
        }
        }
        
        infowindow.open(map, marker);
		
        // 지도의 중심을 결과값으로 받은 위치로 이동시킵니다
        map.setCenter(coords); 
        
        cnt++;
    } 
});    

};

geocoder.addressSearch(addra[i], function(result, status) {

부분에서 addr부분을 배열로 주어 마커를 뽑아 출력을 하려했습니다
그런데 result부분이 계속 배열 순서대로가 아닌 랜덤으로 처리가 됩니다…
어떻게 처리해야할까요
새로고침 할때마다 계속 변경이 됩니다
그리고 안에서 for문 i 수가 제대로 돌지 않습니다. 비동기식인가요?? add리스너라던가?

네 비동기 맞죠.
비동기가 아니라면 굳이 콜백을 받아서 처리할 필요가 없었을 겁니다.

서버 요청이 있기 때문에 콜백을 받아서 처리하는데
문제는 이 콜백이 언제 실행될지는 서버에서 어떤 요청을 먼저 처리해서 응답을 주느냐에 따라 달렸습니다.
배열의 순서가 매 번 달라지는건 당연하죠.

해결하기 위해서는 몇가지 방식이 있지만
저는 기존 비슷한 질문들에 대해서 아래와 같이 안내해 드렸습니다.
참고하세요.

https://devtalk.kakao.com/t/addresssearch/44163/4

https://devtalk.kakao.com/t/topic/57418/2

https://devtalk.kakao.com/t/topic/55564/8

doSomething안에다가 이거를 어떤방식으로 넣어야할지 감이 안잡힙니다 for문을 이용하여 i값을 가져왔다면 여기서는 어떠한방식으로 해야하나요 해보다가 안되어 물어봅니다

doSomething을 보셔야 할 게 아니라
forEach를 보셔야 합니다.

doSomething

  1. 모든 반복문이 돌아서 비동기 요청을 보낸 뒤
  2. 그 비동기 콜백들이 모두 종료된 시점에 호출되는 함수를 의미합니다.

모든 비동기 작업이 끝났을 때 진행해야 하는 추후 코드 흐름을 위한 함수 호출이고요.

제 답변의 의미는
for문을 사용하면 i값이 콜백에서 보존되지 않는 현상을
forEach를 사용하여 해결하시라는 것이었습니다.