콜백 대신 동기로 ajax 호출하기

YI Eun Gook·2020년 2월 2일
0

IE를 안 쓰는 당신은 축복받은 사람

ajax 호출을 할 때 async-await는 이제 기본이겠죠?
하지만 이런 경우가 아직도 왕왕 있답니다.

IE를 지원해야 해야 하는데, babel, polyfill을 쓸 수 없음

오.. 😭
(왜인지 묻지 말아요 더 슬프니깐요 😭😭)

소프트웨어의 성능과 편안한 개발을 트레이드-오프 해봅시다

콜백 지옥 대신 소프트웨어 성능을 '약간'!
낮추는 것으로 편안한 개발을 지킬 수 있답니다.

function getInfo(id) {
  var result;

  $.ajax({ // 높은 확률로 jQuery를 사용중일 거에요
      type: 'GET',
      async: false,
      url: '/api/info/' + id,
      success: function (r) {
          result = r;
      }
  });

  return result;
}

function onclickDetail(id) {
  var result = getInfo(id);
  
  if (result.type == 'special') {
    renderDetailSpecial(result);
    
  } else {
    renderDetail(result);
  }
}

async: false 때문에 getInfo()에서 blocking이 발생할거에요. 그치만 이 웹이

  • api 호출이 충분히, 충분히 빠를 경우
  • UI의 즉시성이 다소 훼손되어도 괜찮을 경우

소프트웨어의 성능을 개발의 편안함으로 트레이드-오프 할 수 있을 것 같습니다.

안티 패턴 아닐까요?

저는 순수함수를 굉장히 좋아합니다!
함수의 파라미터와 결과만 생각하면 되거든요.

순수함수로 개발하는 것은 정말로 편안하고, 행복한 일입니다.
테스트도 물론이고요

그래서 콜백 패턴을 몹시 안 좋아합니다.
둘 이상의 함수에 의존성이 생기면서.. 슬퍼집니다. 😢😢😥😢

그래서 만약 async: false가 안티 패턴이라면.. 안티 패턴이라도 착한 안티 패턴이라고 생각합니다! 😭😭😭

여기까지 오셨다면

LINE ENGINEERING: 코드 가독성에 대해 - 3. 상태와 절차의 정의 기반 프로그래밍definition based programming 이야기도 한 번 읽어보세요!

profile
= v =?;;

0개의 댓글