비동기 처리를 이용하면 오래 걸리는 작업이 종료될 때까지 기다리지 않고 다음 적을 수행하는 등
유연한 프로그래밍이 가능하다.
자바스크립트에서 코드는 기본적으로 작성한 순서대로 위에서 아래 방향으로 순차적으로 실행한다.
console.log("1번");// 1번
console.log("2번");// 2번
console.log("3번");// 3번
이와 같이 순차적으로 코드를 실행하는 것을 동기(Synchronous) 방식 이라고 한다.
은행 창구의 시스템과 비교하자면, 은행 창구에서는 각각 한명의 고객만을 응대한다.
한명의 고객 응대가 끝나면 다음 고객을 응대하는 방식으로 순차적으로 진행된다.
이처럼 동기적으로 동작하는 코드는 작성된 순서에 따라 작업이 진행되므로 작업의 흐름을 파악하기 용이하다.
하지만, 오래걸리는 작업을 빨리 끝나는 작업보다 먼저 실행하게 되면 지연 문제가 발생하게된다.
const longTask(){
// 10초이상 걸리는 작업
}
const shortTask(){
// 매우 빠르게 끝나는 작업
}
longTask();
shortTask();
이 코드를 동기 방식으로 실행하게 되면 10초이상 걸리는 longTask 함수가 끝이날때까지 빨리 끝나는 ShortTask 작업이 대기를 해야하는 비효율적인 상황이 발생한다.
이 문제를 해결하기 위해서는 앞에 실행된 작업과는 관계 없이 다른 작업도 별도로 진행해야한다.
이렇듯 특정 작업을 다른 작업과 관계없이 독립적으로 동작하게 만드는 것을 비동기(asynchornous)라고 한다.