Skip to content

Latest commit

 

History

History
31 lines (17 loc) · 2.65 KB

File metadata and controls

31 lines (17 loc) · 2.65 KB

참고

예상 질문

1. 동기와 비동기란 무엇인가요?

동기는 작업이 순차적으로 실행되며 어떤 작업이 수행중이면 다음 작업은 대기하는 방식이고 비동기는 작업이 종료되지 않은 상태라고 하더라도 대기하지 않고 다음 작업을 실행하는 방식입니다. 대표적인 비동기 방식으로는 Timer(setTimeout, setInterval) 또는 DOM 이벤트 헨들러, Ajax요청 등이 있습니다.

2. 프로미스란 무엇인가요?

자바스크립트는 비동기 처리를 위한 방법 중 하나로 콜백 함수를 사용합니다. 하지만 콜백 패턴은 콜백 헬로 인해 가독성이 나쁘고 에러의 처리가 곤란하다는 단점이 있습니다. 그러한 단점을 보완하기 위해 프로미스를 도입되었고 비동기 처리에 사용됩니다.

3. 프로미스는 어떻게 사용되나요?(2번에 연결해서 대답하면 좋을 것 같습니다.)

프로미스 생성자 함수는 비동기 작업을 수행할 콜백 함수를 인자로 전달 받는데 이 콜백 함수는 resolve와 reject 함수를 인자로 전달받습니다. 비동기 처리가 성공하면 resolve함수를 호출하고 실패하면 reject 함수를 호출합니다.

프로미스로 구현된 비동기 함수를 호출하는 쪽에서는 프로미스의 후속 처리 메서드(then,catch)를 통해 비동기 처리 결과나 에러 메시지를 전달 받아 처리합니다.

4. 콜백 헬을 해결할 수 있는 방법은 무엇이 있을까요?

프로미스를 사용하여 해결할 수 있습니다. 프로미스는 후속 처리 메소드(then이나 catch 메소드)를 체이닝하여 여러 개의 프로미스를 연결해서 사용할 수 있습니다.

5. 프로미스와 async/await의 차이점은 무엇일까요?

우선 첫번째로 코드 가독성이 asnyc/await가 더 좋습니다. 프로미스의 경우 .then을 계속 사용해서 코드가 길어질 가능성이 높습니다. async/await는 비동기 코드를 동기 코드처럼 읽히게 해주기 때문에 코드 흐름을 이해하기 쉽습니다.

두번째로는 에러 처리 방법입니다. 프로미스는 .catch를 통해 에러 핸들링이 가능하지만 async/await는 에러 핸들링을 할 수 있는 기능이 없어 try-catch 문을 사용해야만 합니다.