Program & Timing | JavaScript Timing |
Language code (Lint & IDE) | ES2021, TypeScript (Lint & IDE) |
Machine language (Compile) | Transpiler (Compile) |
File | File & deploy |
Load | Browser load (Browser), Browser parsing (Compile) |
Run (Runtime) | Run (Runtime) |
Terminate | Browser close |
Runtime Execution
State Control
Directive Reference
Indirective Reference
런타임에 추가적인 메모리 연산을 함으로써 참조간의 컨텍스트가 깨지지 않게 함
Flow Control
Sync flow control
Sync Flow : 메모리에 적재된 명령이 순차적으로 실행됨
Sync Flow Control : Goto를 통해 명령의 위치를 이동함
Sub Flow : 함수 등을 통해 별도의 명령셋을 여러번 실행함
Blocking : Sync Flow가 실행되는 동안 다른 일을 할 수 없는 현상
Blocking 줄이기
sync flow를 짧게 하기
다른 쓰레드에 syncflow를 떠넘기기
다른 쓰레드의 작업이 완료되면 원래 쓰레드에 보고해야함
Non Blocking : Sync Flow가 납득할 만한 시간 내에 종료되는 것
Sync & Async
Sync - 서브루틴이 즉시 값을 반환함
Async - 서브루틴이 다른 수단으로 값을 반환함
Promise, callback function, iterations
Async 단점
호출 결과가 즉시 반환되지 않으므로 현재의 sync flow가 종료됨
그 결과 현재의 어휘공간 내의 상태를 결과시점에 사용할 수 없음
요청 시의 상태를 별도로 결과시점에 전달할 부가장치 필요
Sync의 장점 + Async의 장점
sync로직으로 async를 사용할 수 있게 함
하지만 sync flow가 어긋나므로 이전 sync flow의 상태를 기억해 이어줄 장치 필요
상태를 기억하고 이어주는 장치 - Continuation
이를 활용하는 프로그래밍 스타일 - Continuation Passing Style
'과거' 카테고리의 다른 글
너 왜 코드 그렇게 짰어? (0) | 2021.07.05 |
---|---|
Non-blocking JavaScript - 1 (0) | 2021.06.17 |
JavaScript - 1 (Version Specifications) (0) | 2021.06.17 |
웹 앱, 자바스크립트 (0) | 2021.06.16 |
윈도우 멀티태스킹 프로그램 추천 (강추) (0) | 2020.10.23 |