인프런 커뮤니티 질문&답변
promise 이해 1 16분 23초 부분 질문입니다.
작성
·
174
0
.then함수에서
최초 reject(); 함수가 실행되고 다시 .then을 실행할 때 함수 인자가 하나일 경우 성공함수만 호출된다라고 말씀하셨는데
아래 then엔 인자가 하나이니 실행이 안되어야 하는거 아닌가요 ?
즉, by Dave Lee가 출력 되려면 첫번째 then에서 resolve가 출력되어야 하는거 아닌지요..
-> 왜 첫번째 then은 실패, 두번째 then은 성공이 출력되는지 이해가 되질 않습니다..ㅠ
만약 두번째 then부터는 첫번째 함수만 실행되는거면 예제에 나온것처럼 then에 두번째 인자는 필요 없는거 아닌가요 ??
답변 1
1
일단은, chaining 으로 then 을 연결해서 사용하는 경우는 순차적으로 실행되어야 할 코드를 연결하기 위해 사용됩니다.
기재한 16분상의 코드는 결국 다음과 같이 작성한 것이나 마찬가지인 것 같습니다.
promise.then(successCallback1, failureCallback1).then(successCallback2)
그렇다면, 첫번째 실행에서는 failureCallback1 이 실행되고, 그런 다음에 순차적으로 실행되도록 설정된 그 다음 then 에 있는 successCallback2 을 실행한 것으로 이해할 수 있을 것 같아요. then 에 인자를 하나 넣을 때는 성공할 때만을 설정한 것이고, 두개 넣으면 성공/실패를 따로 분리한 것이고요.
then(successCallback)
then(successCallback, failureCallback)
하나의 인자를 넣은 것을 chaining 으로 만들었다면, 이는 순차적으로 실행되는 코드를 넣는 경우가 많으니,
첫번째는 실패콜백, 그 후 두번째는 성공콜백을 실행하는 것이 맞는 것 같습니다.
해당 영상을 다시 한번 보시면, 좀더 이해하실 수 있으실꺼예요.
감사합니다.
Dave Lee in 잔재미코딩




