2017년 2월 26일 일요일

Asynch JS. The Poser of $.Defferred (번역중)


  • 데스크탑, 네이티브: 쓰레딩 모델 접근가능
  • 브라우저 : 쓰레딩 모델 접근 불가능(UI: DOM)를 건드리는 모든 것은 single-thread
    •  UI요소들을 건드리고 변경하는 모든 앱 로직이 항상 같은 쓰레드에서 동작
    • > app은 브라우저가 제공하는 비동기 기능을 최대한 사용하여 최대한 효율적으로 잘 동작하도록 유지하는 것이 중요
  • 브라우저의 비동기 API
    • XHR(XMLHttpRequest 또는 AJAX)와 같은 비동기 API제공
    • 예 ) IndexedDb, SQLite, HTML5 Web Workers, HTML5 GeoLocation API
    • 브라우저가 비동기 프로그래밍을 앱 로직에 노출시키는 방법 : 이벤트 또는 콜백 사용
      예) 이벤트 기반 비동기 API경우, DOM에 이벤트 핸들러 등록하고 나서 동작 호출.
      브라우저는 보통 다른 thread로 동작 수행하고, 적절한 때 main-thread에서 이벤트 발생.
  • $.Deferred의 적용
    • Promises라는 비교적 오래된 패턴+ jQuery 코어에 비동기 프로그래밍을 하는데
    • Promises패턴 + $.Deferred (jQuery 코어의 구현체)
      • Promise패턴: promise객체를 반환하는 비동기 API를 정의하는 것.
      • Promise: (결과가 해당 데이터를 가지고 해결될 것이라는 약속)
  • 사용례
    • 데이터 접근: 특히 원격데이터일 경우. 
    • UI 애니매이션: 



댓글 없음:

댓글 쓰기