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이 발생할거에요. 그치만 이 웹이
소프트웨어의 성능을 개발의 편안함으로 트레이드-오프 할 수 있을 것 같습니다.
저는 순수함수를 굉장히 좋아합니다!
함수의 파라미터와 결과만 생각하면 되거든요.
순수함수로 개발하는 것은 정말로 편안하고, 행복한 일입니다.
테스트도 물론이고요
그래서 콜백 패턴을 몹시 안 좋아합니다.
둘 이상의 함수에 의존성이 생기면서.. 슬퍼집니다. 😢😢😥😢
그래서 만약 async: false
가 안티 패턴이라면.. 안티 패턴이라도 착한 안티 패턴이라고 생각합니다! 😭😭😭
LINE ENGINEERING: 코드 가독성에 대해 - 3. 상태와 절차의 정의 기반 프로그래밍definition based programming 이야기도 한 번 읽어보세요!