[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 만 필수로 나머지 함수는
매개변수(프로퍼티) 값을 따로 추가 안해주셔도 무방합니다.
필요시 실패, 성공, 항상 처리할 함수를 작성해주세요
어렵네요 ㅎㅎ 감사합니다.
답글삭제