조회 수 99 댓글 3

저같은 경우 ajax 사용하여 json 파일이나, xml을 로드하는데,

 

하나 파일의 경우 크게 문제가 없는데, 파일을 한 번에 여러개 로드해야할 경우

모든 파일이 다 로드된 후 실행하려고 하는데,

 

그걸 할 줄 몰라 이렇게 무식하게 하고 있습니다..-_-;;

 

$.ajax({

type:"GET",

url:"1.xml",

dataType:"xml",

success:function(data)

{

        $.ajax(
        {
            type:"GET",
            url: "2.xml",
            dataType:"xml",
            success:function(data)
            {
            $.ajax(
            {
                type:"GET",
                url: "3.xml",
                dataType:"xml",
                success:function(data)
                {
                    
                }
            });

            }
        });

}

});

 

이런식으로 무식하게 합니다..-_-;;

 

이걸 개선할 수 있는 방법(?)이 있을까요?

  • profile
    기진곰 2016.07.26 15:50:28

    1. 불러올 파일 목록을 배열로 만들어 넣어 둡니다. var xmlFiles = ['1.xml', '2.xml', '3.xml'];

     

    2. 함수를 하나 만드는데, 반드시 var myFunction; myFunction = function() { ... }; 이렇게 선언합니다. 나중에 자신을 참조해야 하기 때문에 변수부터 미리 선언해 두어야 해요.

     

    3. 이 함수에서는 제일 먼저 위에서 만든 배열(xmlFiles)을 체크합니다. 배열이 비었으면 그대로 return합니다. 비지 않았으면 xmlFiles.shift() 메소드로 맨 앞의 것을 떼어내어 4단계로 넘어갑니다.

     

    4. 그 파일명을 $.ajax로 호출하면서 success에 myFunction을 넣습니다. 일종의 재귀함수가 되는 거죠. 한 번 호출할 때마다 배열의 길이가 하나씩 줄어들다가 마침내 배열이 비게 되면 실행이 종료됩니다.

    1
  • profile
    하늘희 2016.07.26 16:10:56
    아아 이해했습니다. 감사합니다:)
  • ?
    후하니 2016.07.26 18:08:27
    callback hell..

서버에 요청 중입니다. 잠시만 기다려 주십시오...