

then() 메서드를 통해 Promise를 연결하면 이전 then() 콜백 함수의 반환 값이 해결된 값으로 다음 then() 콜백 함수에 전달됩니다.
예를 들어 다음 코드를 고려하십시오.
이 예에서는 즉시 값 1로 확인되는 새 약속을 만듭니다. 그런 다음 두 개의 then() 메서드를 연결합니다. 첫 번째 then() 메서드에서는 해결된 값에 1을 더하고 결과를 반환합니다. 두 번째 then() 메서드에서는 확인된 값을 콘솔에 기록합니다.
then()의 첫 번째 콜백 함수가 실행되면 값 2를 반환합니다. 그런 다음 이 값은 콘솔에 값을 기록하는 then()의 두 번째 콜백 함수에 해결된 값으로 전달됩니다.
이 경우 첫 번째 then() 콜백 함수(2)의 반환 값은 두 번째 then() 콜백 함수에 이전 약속의 해결된 값으로 전달됩니다. 이것은 값이 하나의 then() 콜백 함수에서 약속 체인의 다음 함수로 전달되는 방식입니다.
예, Promise.then()이 Promise를 반환한다는 것이 맞습니다. 다음은 작동 방식을 보여주는 then() 메서드의 구현 예입니다.
이 예제 구현에서는 Promise 프로토타입에 대한 then() 메서드를 정의합니다. then() 메서드에는 약속이 해결될 때 실행되는 콜백 함수인 onResolved와 약속이 거부될 때 실행되는 콜백 함수인 onRejected(두 인수 모두 선택 사항)의 두 가지 인수가 있습니다.
then() 메서드가 Promise 객체에서 호출되면 현재 Promise 객체(currentPromise)에 대한 참조를 저장하고 then() 메서드가 반환하는 새 Promise 객체(newPromise)를 생성합니다.
그런 다음 then() 메서드는 _registerCallbacks() 메서드를 사용하여 현재 Promise 객체에 콜백 함수를 등록합니다. 이 콜백 함수는 약속이 해결되거나 거부될 때 실행됩니다.
Promise가 해결되거나 거부되면 _registerCallbacks()에 전달된 콜백 함수가 실행됩니다. 그런 다음 이 함수는 then() 메서드에 제공된 onResolved 또는 onRejected 콜백 함수를 호출하여 해결된 값 또는 거부 이유를 인수로 전달합니다.
onResolved 또는 onRejected 콜백 함수가 Promise 객체를 반환하는 경우 then() 메서드는 새 Promise 객체(newPromise)를 확인하기 전에 해당 Promise 객체가 확인되기를 기다립니다. 콜백 함수가 비 약속 값을 반환하면 새 약속이 해당 값으로 즉시 해결됩니다.
이것이 JavaScript Promise에서 then() 메서드가 작동하는 방식을 설명하는 데 도움이 되기를 바랍니다.