인프런 커뮤니티 질문&답변

yh J님의 프로필 이미지
yh J

작성한 질문수

[2024] 한입 크기로 잘라 먹는 리액트(React.js) : 기초부터 실전까지

2.13) 비동기 작업 처리하기 2. Promise

2.13) 비동기 작업 처리하기 2. Promise

해결된 질문

작성

·

114

0

promise 객체를 어떻게 사용하는건지 배웠는데요

콜백지옥을 해결하기 위해 탄생한건가요?

promise 객체를 사용해서 비동기함수를 쓰면 얻는 장점이 무엇인가요? 결과적으로 얻는 이점에 대한 설명이 좀 부족하지 않나 싶고 궁금합니다

답변 2

1

이정환 Winterlood님의 프로필 이미지
이정환 Winterlood
지식공유자

안녕하세요 이정환입니다.

우선 본 강의는 리액트를 메인으로 다루는 강의인 만큼, 자바스크립트에 대해서는 아주 기초적인 핵심 지식만 다루고 넘어가기 때문에 타 자바스크립트만 다루는 도서나 강의보다는 제한적인 정보를 제공하고 있음을 알려드립니다. 이에 아쉬운 부분이 조금 있으셨던 것 같아요 😢

Promise 객체는 콜백 지옥을 해결하기 위해 등장한게 맞지만, 단순히 콜백 지옥을 해결하는 것 이상의 장점도 함께 제공하고 있습니다. 이런 장점들 중 강의에서 설명해드린 점을 제외한 몇가지만 추가로 설명해드릴게요

먼저 Promise를 사용하면 비동기 작업의 호출부와 처리부를 분리할 수 있습니다. 콜백함수를 사용했을 때에는 비동기 작업을 호출하면서 이 작업을 처리하는 콜백함수를 함께 반드시 전달했어야 했지만 Promise를 활용하면 코드의 어느 부분이든 자유롭게 호출해 사용하는 것이 가능합니다.

또한 Promise를 사용하면 비동기작업을 다양한 방식으로 처리할 수 있도록 도와주는 Promise 메서드를 활용할 수 있는데 Promise.all, Promise.allSettled 등이 그것입니다. 이 메서드를 활용하면 여러개의 비동기 작업을 병렬로 수행시키거나, 병렬로 수행 시킨 상태에서 먼저 수행시킨 작업만 성공 시키거나 하는 등의 다양한 활용이 가능합니다.

https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Promise/all

0

안녕하세요, 인프런 AI 인턴입니다.

yh J님의 질문에 대해, “비동기 방식에서 콜백함수 사용 이유”와 관련된 내용이 도움이 될 것 같습니다. 이 질문에서는 왜 비동기 작업을 처리할 때 콜백 함수를 사용하는지, 그리고 비동기 처리에 대한 솔루션으로 Promise 객체를 도입하는 이유에 대한 설명이 있습니다.

관련 답변 링크

비동기 방식에서 콜백 함수를 사용하는 주된 이유 중 하나는, 함수의 결과를 비동기적으로 처리한 후 콜백을 통해 그 결과를 활용할 수 있도록 하는 것입니다. 예를 들어, 웹 API 호출 등의 비동기 작업을 수행한 후 그 결과를 가지고 다음 작업을 수행해야 할 때 콜백 함수를 사용합니다. 하지만 이 과정에서 콜백 함수를 중첩하게 되면 코드의 가독성과 유지 관리성이 떨어지는 ‘콜백 지옥(callback hell)’ 문제가 발생할 수 있습니다.

Promise 객체는 이러한 콜백 지옥 문제를 해결하기 위해 등장했습니다. Promise를 사용하면 비동기 작업의 성공(fulfillment)과 실패(rejection)를 간결하고 명확하게 처리할 수 있습니다. 이를 통해 코드의 가독성을 크게 향상시킬 수 있으며, 연속된 비동기 작업을 순차적으로 또는 병렬로 처리하는 것이 더욱 용이해집니다.

비동기 함수에서 Promise 객체의 사용은 콜백 기반 비동기 처리의 복잡성을 줄여주며, .then(), .catch(), .finally() 메서드를 통해 성공, 실패 및 최종적인 처리를 간단한 방식으로 이어서 수행할 수 있게 합니다. 결과적으로, 비동기 로직의 동기적 표현을 가능하게 하여 개발자가 코드 흐름을 더 쉽게 이해하고 관리할 수 있도록 돕습니다.

이 내용이 궁금증 해결에 도움이 되길 바랍니다. 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏

yh J님의 프로필 이미지
yh J

작성한 질문수

질문하기