[Jquery 비동기 함수] Deferred 에 설명 및 샘플


제이쿼리에서 일반 함수에 비동기를 걸어서 

해당 함수가 종료 된 후에 다른 함수를 실행시키고 싶다면

Deferred 가 있습니다.


예제를 작성해 보자면

오브젝트에 

실행, 성공, 실패, 항상 실행할 함수를 담아서

실행 함수 -> 성공시 성공함수 -> 항상 실행함수
실행 함수 -> 실패시 실패함수 -> 항상 실행함수

순으로 실행시킬 수 있습니다.

-

deferred.resolve 함수를 실행 시켜야지 

deferred.promise().done 함수가 호출됩니다.

-

deferred.resolve 함수를 실행시켜야지

deferred.promise().fail 함수가 실행됩니다.

-

실행 예제




실행결과






어떤 상황에서 써야할까?


셋타임아웃으로 3초뒤에 A 라는 함수를 실행했는데

실행 후에 B 또한 실행시켜야 합니다.

그럴때 셋타임아웃에 

A 아래 B를 적어도 되지만


이러한 경우가 늘어나거나 에러가 발생했을때
C라는 처리도 해야하고 
예외가 늘어나게 된다면 관리가 힘들어집니다.

셋타임을 쓴 경우에 D 라는 함수를 항상 호출하게 해야 한다면?
역시 마찬가지로 굉장히 복잡한 코드가 setTimeout 함수가 작성됩니다.


사용 예제)






asynData 에 anyFn 을 공통으로 잡아놓고

setTimeout 메서는 실행 함수와 성공함수만 추가한 모습


위에 코드를 분석하시면 activeFn 만 필수로 나머지 함수는

매개변수(프로퍼티) 값을 따로 추가 안해주셔도 무방합니다.

필요시 실패, 성공, 항상 처리할 함수를 작성해주세요

댓글

댓글 쓰기

가장 많이 본 글