동기적 : 어떤 작업을 요청했을 때 그 작업이 종료될 때까지 기다린 후 다음(다른) 작업을 수행하는 방식
비동기적 : 어떤 작업을 요청했을 때 그 작업이 종료될 때까지 기다리지 않고 다른 작업을 하고 있다가,요청했던 작업이 종료되면 그에 대한 추가 작업을 수행하는 방식
기본적으로 순차적(동기적)으로 코드가 진행된다.
이때 setTimeout 같은 함수를 사용할 경우 결과가 다른 코드가 아래에 있음에도 결과는 먼저 나온다. 즉, 순차적이지 않는다.(비동기적)
ex)
setTimeout(()=>console.log('나는 늦게출력'),1000); //1초 후 출력
console.log('내가먼저 출력'); //바로출력
비동기적인 형태인 내용들이 그 안에서 순서가 존재하여 동기적으로 진행하는 형태
setTimeout(function(){
console.log('나는 늦게출력')
return setTimeout(function(){
console.log('나는 그다음 늦게 출력')
return setTimeout(function(){
console.log('나는 그다다음 늦게 출력');
},1000)
},1000)
},1000);
console.log('내가먼저 출력');
맨아래 console.log가 먼저 출력 후 1초마다 위에서부터의 console.log가 출력되는 것을 볼 수 있다.
이는 비동기인 setTimeout 함수에서 각각의 순차적으로 진행 되는 것을 알 수 있다. (비동기안에서의 동기적 실행)