- 데스크탑, 네이티브: 쓰레딩 모델 접근가능
- 브라우저 : 쓰레딩 모델 접근 불가능(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 애니매이션:
2017년 2월 26일 일요일
Asynch JS. The Poser of $.Defferred (번역중)
피드 구독하기:
댓글 (Atom)
댓글 없음:
댓글 쓰기