약속이 이행되거나 거부되면 finally 메서드에 지정된 콜백 함수가 호출됩니다. finally() 메서드도 Promise를 반환합니다.
이것은 Promise가 처리된 후 Promise가 성공적으로 이행되었거나 거부되었는지 여부에 관계없이 코드를 실행할 수 있는 방법을 제공합니다. 예를 살펴보겠습니다.
예시
new Promise( (resolve) => setTimeout(resolve("success"), 1000) ).then(val => console.log(val)).finally(() => console.log("Promise complete!"))
출력
success Promise complete!
이제 Promise가 실패하면 어떻게 되는지 살펴보겠습니다 -
예시
// No method get on undefined. This will throw an error new Promise(() => undefined.get()) .then(val => console.log(val)) .catch(err => console.log("Failed!")) .finally(() => console.log("Promise complete!"))
출력
Failed! Promise complete!
두 경우 모두 실패하거나 성공했는지 여부에 관계없이 약속이 finally 문을 실행했습니다.