차근차근/JAVA Script

함수 순차실행

예쁜꽃이피었으면 2015. 1. 15. 18:01


검색어 : 함수순차실행


js함수를 사용중인데.. 

js 함수 실행 후 안드 가서 함수 실행해서 다시 값 받아와서 ajax실행을 해야 하는데..

이전 함수가 완료 되기도 전에 막 다음으로 넘어가니까 값이 그냥 다 null이다.. 


일단 방법이 있나 찾아보긴하는데 될지 안될지 모르겠다.




http://blog.seonoya.com/?p=15


[jquery]queue “function의 순차적 실행을 위한 방법”

Javascript 를 다루다 보면…


여러 function들에 대한 순차 실행의 필요성을 느껴왔다.


매번 꼼수로 우회하던걸 [jquery] .queue 를 통해 처리해 보았다. (물론 이것도 꼼수라면 꼼수)


 


$(someElement).queue(dothis).queue(dothat);


function dothis(next) {

    // do something

    someCallback( function() {

        next();

    });

}


function dothat(next) {

    // do more

    next();

}

 


 


요렇게 사용하면 된다.


하지만 .queue 내부의 흐름은 아직 파악 못했다.


그럴 시간이 없다. 나중에 다시 보충


 


 


so what are the disadvantages? One (possibly the only one) is that you can’t easily pass parameters this way. You could store the parameters somewhere using jQuery’s data function or in a DOM data-* attribute.


 


단점이라면 parameter 를 사용 못한다는거…


이리저리 꼼수를 부려봤지만 포기… 우선은 아쉬운데로 멤버변수를 통해 처리


 


참고 URL : http://www.bitstorm.org/weblog/2011-2/How_to_use_the_jQuery_queue_function.html





JavaScript 콜백 함수의 활용

http://inspiredjw.tistory.com/8


JavaScript 에서는 콜백 함수를 아주 쉽게 구현할 수 있고

아주 강력합니다.

특히 AJAX요청과 함께 사용하면 정말 강력한데요.

예를 들어, AJAX요청을 해서 어떤 정보를 가져와

그 가져온 정보로 무엇인가를 처리해주고 싶습니다.

하지만 AJAX특성상 서버의 응답도 영향이 있기 때문에

같은 요청도 같은 컴퓨터일지라도 네트워크 환경 등 여러가지 변수 때문에 반응 속도가 천차만별입니다.

따라서 setTimeout 을 이용한다거나 여러가지 다른 방법도 있겠지만

보다 확실한 방법은 콜백 함수를 이용하는 방법입니다.

콜백함수를 이용하게 되면

"어, 나 이 작업 다 끝났으니까 뭐 할 꺼 있으면 해"

라고 메시지를 전달함으로써 확실히 가져온 데이터를 가지고 처리를 할 수 있게 됩니다.

이제 예제 소스를 보여드리겠습니다.

var getSum = function( callback ) { $.getJSON("/ajax/getInfo", function( data ) { var sum = data.number + data.people; if( typeof callback === "function" ) { callback( sum ); } }); }; getSum(function(sum) { alert( sum ); });

이렇게 해주게 되면 getSum이란 함수를 호출했을 때 ajax 로 값을 가져와 어떤 값들을 처리해서 그 결과값을 

콜백 함수로 보내줄 수도 있고 딱히 콜백함수를 통해 보내주는 parameter가 없더라도 콜백함수를 호출해

순차적으로 일을 처리할 수 있게 됩니다. 

저 같은 경우에는 Google Maps JavaScript SDK 를 할 때 많이 유용하네요.

또 여러가지 제가 정의한 함수들끼리 데이터 처리를 할 때 어떤 함수의 처리가 반드시 어떤 함수의 처리보다 

선행되어야 한다거나 그런 경우에 많이 유용한 것 같네요.  







http://www.clien.net/cs2/bbs/board.php?bo_table=kin&wr_id=2544936



http://www.phpschool.com/gnuboard4/bbs/board.php?bo_table=qna_html&wr_id=221217



[js] 동기화 vs 비동기화 1 / 3 -  3 / 3 <- 엄청난 고수의 느낌이 남..



jQuery 다수의 Ajax 요청 처리 관련

http://blog.whitelife.co.kr/entry/jQuery-%EB%8B%A4%EC%88%98%EC%9D%98-Ajax-%EC%9A%94%EC%B2%AD-%EC%B2%98%EB%A6%AC-%EA%B4%80%EB%A0%A8



2. ajax 동기요청



//...

$.ajax({

//...

async: false,

//...

});

//...



jQuery를 사용 했는데, async는 기본 값이 true이고 비동기 요청을 하게 된다. 이 값을 false로 적용하게 되면, 동기 요청을 하면서 순차적인 처리가 가능해진다. 

※ 참고 사이트: http://jquery.com/





반응형