Asynchronous Programming

less than 1 minute read

ASYNCHRONOUS PROGRAMMING

Why?

싱글 스레드로 동작하는 javscript의 한계를 해결하는 방법이므로 비동기 프로그래밍을 이해하는 것은 매우 중요하다.

DB나 file에 접근하거나 네트워크 통신을 하는 등의 경우에 비동기 처리를 통해서 blocking하지 않고 효과적으로 처리할 수 있다.

callstack & callback queue

call stack

Web APIs

Render

request animation frame

render tree

layout

Paint

micro task queue

promise then: then이 끝날 때 까지 모아놨다가 한번에 callback queue로 이동

mutation observer: 돔 변경 감시

callback queue

event loop

call stack이 비어있으면 callback queue의 callback함수가 stack으로 올린다.

Event Queue와 call stack의 관계

순서 예상해보기

const baseData = [1,2,3,4,5,6,100];

const asyncRun = (arr, fn) => {
   arr.forEach((v,i) => {
     setTimeout(() => {
       setTimeout(() => {
         console.log("cb 2");
         fn(i)
        },1000);
       console.log("cb 1");
     }, 1000);
   });
}

asyncRun(baseData, idx =>console.log(idx))