비동기 프로그래밍에서 'promise chaining'이란 무엇인가요?
_____Promise chaining은 여러 비동기 작업을 순차적으로 처리하기 위해 여러 개의 Promise를 연속해서 연결하는 기법입니다. 각 `.then()` 블록이 이전 Promise가 성공적으로 완료된 후 실행되며, 이를 통해 복잡한 비동기 흐름을 간결하게 표현할 수 있습니다.
Q2: Promise chaining은 왜 사용하나요?
복잡한 비동기 작업을 순차적으로 실행하고, 각 단계의 결과를 다음 단계로 전달하기 위해 사용합니다. 이를 통해 콜백 지옥(callback hell)을 피하고 코드의 가독성과 유지보수가 쉬워집니다.
Q3: Promise chaining의 기본 구조는 어떻게 되나요?
```javascript
asyncFunction()
.then(result1 => {
// result1 처리
return nextAsyncFunction(result1);
})
.then(result2 => {
// result2 처리
return anotherAsyncFunction(result2);
})
.then(result3 => {
// 최종 결과 처리
})
.catch(error => {
// 에러 처리
});
```
Q4: 각 `.then()`에 반환값이 중요한 이유는?
각 `.then()` 내에서 값을 반환하거나 또 다른 Promise를 반환하면, 해당 반환값이 다음 `.then()`의 입력으로 전달됩니다. Promise를 반환하면 다음 `.then()`은 그 Promise가 해결될 때까지 기다립니다.
Q5: Promise chaining에서 에러 처리는 어떻게 하나요?
체인 마지막에 `.catch()`를 붙이면 체인 내 어떤 단계에서 발생한 에러든 모두 잡아서 처리할 수 있습니다. 중간에 개별적으로 에러를 처리하고 싶다면 각 `.then()` 뒤에 `.catch()`를 붙일 수도 있습니다.
Q6: Promise chaining을 사용하면 어떤 문제가 해결되나요?
콜백 함수 중첩으로 인한 복잡함과 가독성 저하, 에러 핸들링의 어려움 등이 개선됩니다. 순차적인 비동기 작업을 더 명확하고 직관적으로 표현할 수 있습니다.
Q7: Promise chaining과 async/await의 차이는 무엇인가요?
Promise chaining은 `.then()`과 `.catch()` 메서드를 연결해서 비동기 흐름을 나타내는 반면, async/await는 동기 코드처럼 보이게 작성해 가독성을 높이고 에러 처리를 try/catch로 쉽게 할 수 있습니다. 둘 다 비동기 처리를 위한 방법이며, 상황에 따라 선택해 사용합니다.
Q8: 예시 코드를 보여주세요.
```javascript
function fetchData() {
return new Promise(resolve => setTimeout(() => resolve('data'), 1000));
}
function processData(data) {
return new Promise(resolve => setTimeout(() => resolve(data.toUpperCase()), 1000));
}
fetchData()
.then(data => {
console.log('Fetched:', data);
return processData(data);
})
.then(processedData => {
console.log('Processed:', processedData);
})
.catch(error => {
console.error('Error occurred:', error);
});
```
이처럼 비동기 작업을 순차적으로 처리하면서, 각 단계의 결과를 다음 단계로 넘기는 것이 Promise chaining입니다.
작성자:
김하윤 [비회원]
| 작성일자: 1년 전
2024-09-12 16:03:43
조회수: 115 | 댓글: 0 | 좋아요: 0 | 싫어요: 0
조회수: 115 | 댓글: 0 | 좋아요: 0 | 싫어요: 0
내용이 부정확하다면 싫어요를 클릭해주세요.