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

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() 함수 안에서 어떤 쿼리로 어떤 결과가 나왔는지 확인 할 수 있을거에요.

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