Syncronous (동기)
- 요청을 보낸 후 해당 요청의 응답을 받아야 다음 동작을 실행하는 방식이다.
즉, 한 작업이 실행되는 동안 다른 작업은 멈춘 상태를 유지하고 자신의 차례를 기다리는 것을 의미한다.
- 단일 스레드(싱글 스레드) 라고 부르기도 한다.
장점
- 진행방향이 일방향이기 때문에, 코드에서 에러가 나더라도, 어디서 발생하였는지 쉽게 파악할 수 있습니다.
단점
- 비동기와 다르게, 코드가 순서대로 완료되므로 수행속도가 느리다는 단점이 존재합니다.
Asyncronous (비동기)
- 요청을 보낸 후 응답과 관계없이 다음동작을 실행하는 방식이다.
즉, 어떠한 요청을 보내면 그 요청이 끝날 때까지 기다리는 것이 아니라, 응답에 관계없이 바로 다음 동작이
실행되는 방식을 의미한다.
- 웹사이트가 로딩돠거나, 사이트의 응답을 기다리는 사용자들을 위해서는 JavaScript의 경우 웹에서 실행 시
비동기적으로 동작할 수 있어야 한다.
- EX> Rest API 요청, 파일/데이터베이스 처리, 타이머 암호화/복호화 등 처리 (오래 걸리는 것)
비동기 처리의 문제점
- Rest API를 호출해서 결과를 받아, 이를 기반으로 코드를 실행하는 경우 결과값을 받지 않은 채로, 다음
코드가 실행되는 경우 코드 실행에 문제 발생
setTimeout(() => {
console.log('안도감')
}, 3000)
EX 비동기 처리의 문제 해결 CallBack
console.log('안녕하세요');
function desc(callback) {
setTimeout(() => {
console.log('박원기입니다.');
callback();
}, 3000);
}
function desc2() {
console.log('HelloWorld!');
}
desc(desc2);
reference
https://blog.naver.com/qkrdnjsrl0628/222709982318
https://hazel-developer.tistory.com/179
https://ljtaek2.tistory.com/142