[코딩만화] 비동기 프로그래밍이 뭔가요?
https://www.youtube.com/watch?v=m0icCqHY39U
비동기 프로그래밍
· 앞에서 행하여진 연산이 완료되었다는 신호를 받고 비로소 특정한 연산이 시작되는 방식
· 특정 코드의 처리가 완료되기 전, 처리하는 도중에도 아래로 계속 내려가며 수행하는 것
동기(Synchronous)
· 현재 작업의 응답이 끝남과 동시에 다음 작업이 요청
· 함수를 호출하는 곳에서 호출되는 함수가 결과를 반환할 때까지 대기
· 작업 완료 여부를 계속해서 확인
비동기(Asynchronous)
· 현재 작업의 응답이 끝나지 않은 상태에서 다음 작업 요청
· 함수를 호출하는 곳에서 결과를 기다리지 않고, 콜백함수의 결과를 대기
· 작업 완료 여부를 확인X
비동기로 일을 한다.
→ 프로세스나 쓰레드가 여럿이 돌고있다.
→ 멀티태스킹이 구현
→ 실전에서 비동기로 해결해야할 문제들은 코드가 복잡해질 확률이 높음
ES6버전부터
· Promise 도입
· 비동기 작업을 수행하는 함수가 Promise 객체를 반환
· 그 생성자에 인자로 들어가는 함수에 첫번째 인자로는 수행할 비동기 작업, 두번째 인자에는 그 결과물을 콜백함수에 전달하는 함수가 들어감
· then 함수로 꼬리에 꼬리를 잇는 체이닝 방식으로 비동기 작업들을 순차적으로 진행
ES7버전부터
· Async/Await 도입
· Promise로 작성된 코드들을 한층 더 간결하고 직관적이게 실행 가능
· 비동기 안에 동기적으로 코드 작성 가능