동기와 비동기 차이
동기
순차적, 직렬적으로 함수를 실행합니다.
순차적으로 실행되므로, 어떤 작업이 수행 중이라면 뒤의 작업은 대기합니다.
블로킹(작업 중단)이 발생합니다.
비동기
병렬적으로 함수를 실행합니다.
현재 작업의 종료 여부와 무관하게 다음 작업을 실행합니다.
그러므로 동기방식과 달리 순서가 보장되지 않습니다.
블로킹이 발생하지 않습니다.
콜백 함수란
함수 파라미터에 들어가는 함수를 뜻합니다.
콜백 함수를 사용하는 이유
함수를 순차적으로 실행하고 싶을 때 사용합니다.
비동기 처리과정에서 함수가 차례대로 수행되지 않을 수도 있기 때문에 콜백 함수를 사용하여 순차적으로 실행할 수 있습니다.
콜백 지옥이란
비동기 처리 로직을 위해 콜백 함수를 연속해서 사용할 때 발생하는 문제로 토드 가독성이 좋지 않습니다.
콜백 지옥 해결방법
해결방안으로는 promise와 async, await이 있습니다.
Promise란
JavaScript 비동기 처리에 사용되는 객체입니다.
콜백 함수와 하는 일은 같지만, 자체 메서드인 then을 사용하여 순차적으로 실행할 함수를 실행할 수 있어 콜백 함수보다 가독성이 좋습니다.
async / await 이란
비동기 처리 패턴 중 가장 최근에 나온 문법으로 promise를 사용한 비동기 처리 코드의 가독성을 높여줍니다.
함수 앞에 async를 붙여 함수가 항상 promise를 반환하게 하고, async 함수 안의 await 함수를 통해 작업이 끝나고 결괏값을 반환할 때까지 대기하다 promise가 처리가 되면 실행이 재개됩니다.
'면접 요약 정리' 카테고리의 다른 글
HTTP와 HTTPS 정리 (1) | 2022.10.23 |
---|---|
REST API 정리 (0) | 2022.10.20 |
npm 정리 (0) | 2022.10.20 |
var, let, const 정리 (0) | 2022.10.18 |
Node.js / Express 정리 (0) | 2022.10.17 |