Synchronous는 현재 작업의 응답과 다음 작업의 요청이 동시에 일어나는 것이다. 요청과 그 결과가 동시에 일어나는 것이다. 요청 후 결과가 와야만 그 다음 작업이 이루어지는 방식이다.
Asynchronous는 현재 작업의 응답과 다음 작업의 요청이 동시에 일어나지 않는 것이다. 요청과 그 결과가 동시에 일어나지 않는 것이다. 요청 후 결과가 오는 동안 그 다음 작업이 이루어지는 방식이다.
호출된 함수가 자신의 작업을 모두 끝낼때까지 제어권을 가지고 있어 호출한 함수가 대기하도록 한다. 즉, 다른 함수가 작업을 하지 못하도록 제어권을 계속 가지고 있는 것이다.
호출된 함수가 바로 return해서 호출한 함수에게 제어권을 주어 다른 일을 할 수 있게 한다. 호출된 함수가 자신의 할 일을 모두 마치지 않더라도 바로 제어권을 리턴해주는 것이다.
순서대로 진행되어야 하고, 제어권이 넘어갔기에 대기 시간 발생
순서대로 진행되어야 하고, 제어권이 넘어가지는 않았기 때문에 계속적으로 완료 확인
순서대로 진행되지 않아도 괜찮지만 제어권이 넘어갔기에 대기 시간 발생
순서대로 진행되지 않아도 괜찮고, 제어권이 넘어가지도 않았기에 호출하고 작업을 하고 있다가 완료시 콜백
https://dev-coco.tistory.com/162
https://velog.io/@soyeon207/%EB%8F%99%EA%B8%B0-%EB%B9%84%EB%8F%99%EA%B8%B0-blocking-non-blocking
https://lu-coding.tistory.com/15