동기(Synchronous)
한 작업이 완료될 때까지 다음 작업은 대기해야 합니다.
비동기(Asynchronous)
특정 작업이 끝나지 않았더라도 다음 작업을 실행 할 수 있습니다.
console.log('1');
setTimeout(() => {
console.log('2');
}, 0);
console.log('3');
setTimeout() 함수가 실행되고 나서 이 작업이 끝나지 않았지만 코드는 다음 작업으로 이동해 3을 출력합니다
자바스크립트(Javascript)의 동작방식
자바스크립트는 단일 스레드(single-threaded) 언어기 때문에 하나의 작업을 하나씩 처리합니다(동기)
그러나 서버와의 통신등과 같이 시간이 오래 걸리는 작업을 하려고보면 통신 답변이 올때까지
다른 일은 하지 못하고 계속 기다리게 되는 문제가 발생하게 됩니다.
따라서 자바스크립트에서는 promise, async/await 등을 이용하여
비동기적으로 프로그래밍을 할 수도 있습니다.
답변이 올때까지 기다리는게 아니라,
답변을 요청한 뒤에 다른 작업을 시행합니다
어느 순간 답변이 도착하면 다시 그 전의 작업으로 돌아가 작업을 이어나가는 방식이라고 이해하면 됩니다.
728x90
'기타 > JS && CSS' 카테고리의 다른 글
[ CSS ] text-align : center 와 margin : auto 정리 (0) | 2024.05.04 |
---|---|
[ 알고리즘 ] 유클리드 호제법을 사용한 최대공약수, 최소공배수 (3) | 2024.03.24 |
배열 메소드 (0) | 2024.03.07 |
[JavaScript] Return Vs. break 한줄요약 (0) | 2023.09.06 |