상식닷컴
로그인
가입하기
2026년 상식닷컴 선정 식당 & 카페 리스트
2025년 2026년 신상 호텔 리스트
최근에 오픈한 호텔을 찾는다면 살펴보세요
일주일 식단표 어플
자동 일주일 식단표 어플
안드로이드
아이폰
주식 & 코인 차트의 신
1000만원으로 2000만원 만들기 프로젝트
수정하기 - 비동기 프로그래밍에서 'promise.finally'의 사용법은 무엇인가요?
닉네임
비밀번호
제목
내용
[이미지 업로드는 권한이 있는 사람만 가능. 하단 카톡으로 연락]
`Promise.<a href='https://sangseek.com/sangseeks/finally/ko'>finally</a>()`는 JavaScript의 Promise 객체에서 제공하는 메서드로, 비동기 작업이 완료된 후 반드시 실행되는 코드를 정의할 수 있게 해줍니다. 이 메서드는 Promise가 성공적으로 이행되거나 거부된 후에 실행되는 콜백 함수를 등록할 수 있습니다. `finally()`는 주로 <a href='https://sangseek.com/sangseeks/리소스 정리/ko'>리소스 정리</a>, 로딩 스피너 숨기기, 또는 공통적인 후처리 작업을 수행하는 데 유용합니다. 기본 사용법 `finally()` 메서드는 <a href='https://sangseek.com/sangseeks/Promise 체인/ko'>Promise 체인</a>의 마지막에 위치하며, Promise가 이행되거나 거부된 후에 실행됩니다. 다음은 `finally()`의 기본적인 사용 예시입니다: ```javascript const myPromise = new Promise((resolve, reject) => { // 비동기 작업 수행 <a href='https://sangseek.com/sangseeks/setTimeout/ko'>setTimeout</a>(() => { // 성공적으로 작업이 완료되면 resolve 호출 resolve("작업 완료!"); // 또는 오류가 발생하면 reject 호출 // reject("오류 발생!"); }, 1000); }); myPromise .then(result => { console.log(result); // "작업 완료!" 출력 }) .catch(error => { console.error(error); // 오류 발생 시 처리 }) .finally(() => { console.log("비동기 작업이 완료되었습니다."); // 항상 실행됨 }); ``` 위의 예제에서 `finally()` 블록은 Promise가 이행되거나 거부된 후에 항상 실행됩니다. 따라서 성공적인 결과가 출력된 후에도 "비동기 작업이 완료되었습니다."라는 메시지가 출력됩니다. `finally()`의 특징 1. 반환값 : `finally()` 메서드는 항상 원래의 Promise를 반환합니다. 따라서 `finally()`를 호출한 후에도 `then()`이나 `catch()`를 계속 체이닝할 수 있습니다. 2. 에러 처리 : `finally()` 블록 내에서 발생한 오류는 Promise 체인의 에러 처리기(`catch`)로 전달되지 않습니다. 이는 `finally()`가 항상 실행되기 때문에, 그 안에서 발생한 오류는 무시되거나 처리되지 않을 수 있습니다. 3. 비동기 작업 : `finally()` 블록 내에서 비동기 작업을 수행할 수 있지만, 이 경우 `finally()`는 비동기 작업이 완료될 때까지 기다리지 않습니다. 즉, `finally()` 블록이 끝난 후에 비동기 작업이 실행될 수 있습니다. 예제: 비동기 작업과 함께 사용하기 ```javascript const fetchData = () => { return new Promise((resolve, reject) => { setTimeout(() => { resolve("데이터 수신 완료"); }, 2000); }); }; fetchData() .then(data => { console.log(data); // "데이터 수신 완료" 출력 }) .catch(error => { console.error("오류:", error); }) .finally(() => { console.log("<a href='https://sangseek.com/sangseeks/데이터 요청/ko'>데이터 요청</a>이 완료되었습니다."); // 항상 실행됨 }); ``` 사용 사례 1. 로딩 스피너 : 비동기 작업이 진행되는 동안 로딩 스피너를 표시하고, 작업이 완료되면 스피너를 숨기는 데 사용할 수 있습니다. 2. 리소스 정리 : 데이터베이스 연결, 파일 핸들러 등과 같은 리소스를 정리하는 데 유용합니다. 3. 공통 후처리 : 여러 Promise 체인에서 공통적으로 수행해야 하는 후처리 작업을 정의할 수 있습니다. 결론 `Promise.finally()`는 비동기 프로그래밍에서 매우 유용한 도구로, Promise의 <a href='https://sangseek.com/sangseeks/이행 여부/ko'>이행 여부</a>와 관계없이 항상 실행되는 코드를 작성할 수 있게 해줍니다. 이를 통해 코드의 가독성을 높이고, 공통적인 후처리 작업을 간결하게 처리할 수 있습니다. 비동기 작업을 다룰 때 `finally()`를 적절히 활용하면, 코드의 안정성과 유지보수성을 향상시킬 수 있습니다.
이용안내
커뮤니티 이용안내
×
- 게시한 게시글로 발생하는 문제는 게시자에게 책임이 있습니다.
- 게시글이 타인/타업체의 저작권을 침해할 경우 모든 책임은 게시자에게 있습니다. 게시자가 모든 손해를 부담해야 합니다.
- 상식닷컴 운영자는 게시자와 상의하지 않고 게시글을 수정 또는 삭제할 수 있습니다.
- 상식닷컴 운영자는 깨끗한 커뮤니티 공간을 만드는 것이 1순위입니다.
수정하기
취소하기