프라미스: then vs. catch
아래 두 코드 조각을 보세요. 두 코드는 동일하게 동작할까요? 모든 상황을 고려하여 두 코드 조각이 동일하게 동작할지 아닐지를 판단해 보세요.
promise.then(f1).catch(f2);
비교하기
promise.then(f1, f2);
두 코드는 다르게 동작합니다.
f1
에서 에러가 발생하면 아래 코드에서는 .catch
에서 에러가 처리됩니다.
promise
.then(f1)
.catch(f2);
하지만 아래 코드에선 f1
에서 발생한 에러를 처리하지 못합니다.
promise
.then(f1, f2);
then
핸들러에서 에러가 발생하면 체인 아래로 전달됩니다. 위 코드에는 f1
아래에 이어지는 체인이 없네요.
.then
은 결과나 에러를 다음 .then
이나 catch
에 전달합니다. 첫 번째 코드 조각엔 catch
가 있지만 두 번째 코드 조각엔 이어지는 체인이 전혀 없기 때문에 에러가 발생한 경우 이 에러를 처리하지 못한다는 차이가 생깁니다.