addressSearch 함수의 결과를 전역변수에 담고 싶습니다

주소 데이터로 좌표(위도, 경도 찾기)를 반환하는 데이터들의 모음이 필요한데

함수가 콜백 형태로 되어있더군요.
예를 들어

var myx = ‘’;
var callback = function(result, status){
if (status === daum.maps.services.Status.OK) {
myx = result[0].x;
console.log(myx); //여기서 나옴
}
}

geocoder.addressSearch(haddr2_daum,callback);
console.log(myx); // 안 나옴

이런 식인데… 지금 개발하고 프로젝트상 콜백 함수로 진행하는게 조금 제한되어 있습니다.

가령 예를 들어
function getLocation(myaddress)
{
var answer = (좌표가 담긴 배열 또는 Object)
return answer;
}

이런식으로 활용할 수 있는 방법이 없을까요?
꼭 콜백 함수 코드 안에서 작업을 해야하는건지…

Ajax 호출을 해야하는 API는 당연히 비동기(async) 로직이 들어갈 수 밖에 없으며
콜백 함수를 사용하지 않으면 이 후의 로직을 전개해 나가기 힘듭니다.

만약 JS의 promise, async/await 스펙을 사용하지 않을 것이라면
콜백 스타일을 탈피할 수 없습니다.

콜백을 사용한다고 해서 해법이 없는 것은 아닙니다.
CPS 로 계속해서 콜백을 받아 넘긴다거나
Event-driven 방식으로 구현하여 전부 이벤트 등록하여 사용하는 방식으로 사용 스타일을 변경하면
불가능하지 않을 거라 생각됩니다.

설명해주신것은 감사합니다만 제가 자바스크립트 이해도가 높지 않아서 ;; 답변의 의미를 정확하게 파악하지 못했습니다

가령 geocoder.addressSearch(haddr2_daum,callback) 이 메소드를 반복문으로 작성한다고 가정하면

콘솔에 표기할때마다 실제로 haddr2_daum 은 반복문/ 배열 요소에 따라 바뀌는데

해당 콜백 함수 안에서 로그를 출력하면 가장 마지막에 온 주소 데이터로만 출력되는데

반복문으로 접근을 하면 안되는건가요? 그리고 반복문으로 접근시 result 값이 제대로 나오기는 합니다만 그 순서 조차 랜덤으로 나오더군요… 조금만 더 디테일하게 설명이 가능한지 부탁드리겠습니다.

주소검색에 쓰일 주소 문자열이 든 배열을 addressArray 라고 가정하면

var addressArray = [ /*...*/ ];

var xObject = {}; // 각 주소에 대한 x 좌표를 담을 객체
var total = addressArray.length;
var counter = 0;

addressArray.forEach(function (addr) {
  geocoder.addressSearch(addr, function(data, status) {
    xObject[addr] = data[0].x;

    counter++; // 비동기 콜백이 수행되었으면 하나 업 카운트

    if (total === counter) { // 모든 비동기 콜백이 수행되었다면
      doSomething(); // 다음 로직으로 넘어갑니다.
    }
  };);
});

function doSomething() {
  console.log(xObject);
}

컨셉 코드입니다.
직접 돌려본 것은 아니라서 에러가 있을 수 있습니다.
결과 상태(status)와 좌표값이 안 나올 때의 예외처리는 없으며
요청에 쓰이는 주소 배열이 사이즈가 크면 초당 리퀘스트 제한에 걸릴 수 있습니다.