쿼리가 여러개인 경우 콜백 처리는 어떻게 하나요?

예를 들어 addressSearch(addr, callback, options) 같은 함수를 사용하는 경우
콜백함수를 지정해서 결과값을 받고 있습니다.
하지만 쿼리가 여러개인 경우에는 어떤 결과값이 어떤 쿼리에 대한 결과값인지 확인할 수가 없네요.
콜백함수에서 id값 같은 것을 받아서 처리할 수 있는 방법은 없을까요?

result 값에서 addr 값으로 확인하는 방법도 있지만, 쿼리로 요청한 addr 값과 result 값에 담겨오는 값이 같지는 않네요.
예를 들어 "서울특별시 영등포구 의사당대로3 현대캐피탈빌딩"이라고 요청한 경우 반환되는 값은 주소값과 빌딩명을 잘라서 반환해주고 있어서 콜백함수에서 처리할 수 있는 id값은 아닌 것 같습니다.
이미지 1

var kvTable = {};
var queries = [ /* many addresses */ ];
var counter = 0;

function doNext() {
    // synchronize all async job (addressSearch)
    console.log(kvTable);
}

queries.forEach(function (q) {
    // 'q' is query string
    geocoder.addressSearch(q, function (status, result) {
        if (status === daum.maps.services.Status.OK) {
            kvTable[q] = results[0];
        }

        counter++;
        if (counter === queries.length) {
            doNext();
        }
    });
});

doNext() 함수 안에서 어떤 쿼리로 어떤 결과가 나왔는지 확인 할 수 있을거에요.

다만 쿼리문이 늘어남에 따라서 속도의 저하가 온다거나
쿼터 초과가 되는 부분에 대해서는 도움을 드릴 수 없는 점 양해 부탁드립니다.

아. 감사합니다. :smiley:
예제로 알려주신 코드 참조해서 문제를 해결했습니다.
콜백 function 내에서 참조할 수 있는 값을 만든다는 것은 생각을 하지 못했네요.

1개의 좋아요