일단 요즘 모던 JS 위주(node 위주 등)로 배운 애들은 조금 사정이 낫지. 심지어 async await 까지 생겼으니 얼마나 축복 받았겠냐.

그런데 개 시발 국비쳐먹고 오거나 땔감 선배 잘못만나 갔다온 애들이 어려워하더라.

어자피 이런 불쌍한 애들은 jQuery 에 deferred 객체 존재 자체조차 모를거야. 선배들도 모르기 때문에.


간단해. 동기식 코드를 비동기 방식으로 작성하여 흐름(Flow)을 제어하는 패턴이야.

단지 함수가 들어가서 동기로 착각하기 쉽지만 실질적으로 실행 바로 안되는 비동기 코드지.

자, 기본적으로 비동기 처리할 때 일반적인 콜백으로 한다면 어떻게 되겠냐?


처리할거1.onsuccess = function() {

  처리할거2.onsuccess = function() {

    처리할거3.onsuccess = function() {

      처리할거n.onsuccess = function() {

        // ...

      }

      처리할거n.실행()

    }

    처리할거3.실행()

  }

  처리할거2.실행()

}

처리할거1.실행()


이따구로 작성하지?




딱 이거야.

이걸 말야.


new Promise(처리할거1)

.then(처리할거2)

.then(처리할거3)

.then(처리할거n)...


이렇게 간결해지지.


아, 처리할거n 은 함수고, return new Promise(처리할거다음함수) 작성하면 위 패턴으로 작성 가능하다는 거다.

그 차이뿐이야.


자, 땔감과 국비들 숙지하도록. jQuery deferred 개구리니 쓰지 말고.