반환 날개로 연기 드리프트 같이하지만 약속에서 기능

할 수 있는 누군가는 이유를 설명하십시오 반환하는 날개로 연기 드리프트 같이하지만 약속을 허용한 체인지 적용한 후에다음()/(유)방법은하지 않는 이유는 무엇입니까?

예제:

const url = 'https://58f58f38c9deb71200ceece2.mockapi.io/Mapss'

function createRequest1() {
  const request = axios.get(url)

  request
  .then(result => console.log('(1) Inside result:', result))
  .catch(error => console.error('(1) Inside error:', error))

  return request
}

function createRequest2() {
  const request = axios.get(url)

  return request
  .then(result => console.log('(2) Inside result:', result))
  .catch(error => console.error('(2) Inside error:', error))
}

createRequest1()
.then(result => console.log('(1) Outside result:', result))
.catch(error => console.error('(1) Outside error:', error))

createRequest2()
.then(result => console.log('(2) Outside result:', result))
.catch(error => console.error('(2) Outside error:', error))
<script src="https://unpkg.com/axios@0.16.1/dist/axios.min.js"></script>

https://jsfiddle.net/nandastone/81zdvodv/1/

내가 이해하는 약속 방법 값을 반환해야 합이 연결될 수 있지만,차이가 존재하는 이유는 무엇이 이러한 두 가지 반환 방법?

질문에 대한 의견 (3)
해결책

당신의 첫번째 예에서 반환하는 원래의 약속입니다. 당신의 두 번째 예에서 반환다른약속,하나를 호출하여 만든을 잡아.

중요한 차이점이 있다:

  1. 에서 당신의 두 번째 예에서,당신은 당'다시 전달하지 않는 해상도에서 값,그렇게 약속을 반환에 의해다음가 해결되었으로정의되지 않은(반환 값이console.로그).

  2. 에서 당신의 두 번째 예에서,당신은 당'다시 변환하는 거절로 해상도와 함께undefined(에 의해 그 결과를 반환한의console.로그인을 잡아). 는잡는핸들러는't 던지거나 반환 약속는's 거부로 변환하는 거절로 해상도입니다.

중 하나 것에 대한 약속 체인은 그들이 변신한 결과,모든 전화하는다음또는잡을새로 만들어 약속,그리고 그들의 핸들러를 수정할 수 있습니다 무엇's 보낸 다운스트림으로 결과를 통해 전달합니다.

일반적인 패턴으를 수집하는 때에는 반드시한 결과,체인 그러나의 함수에 대한 체인을 의도적으로 변환 결과를 전달합니다. 일반적으로,당신은 것't잡는핸들러를 제외하고 터미널에서 체인의하지 않는 한,당신은 당'다시 사용하여 오류의 정정을 조건으로(의도적으로 변환을 거절로 해결).

하고 싶다면 로그인이 무엇을 통과하면서도 호출자가 그것을 보고만 할 수 있습니다.:*원하는 결과를 반환하는 체인의 어떤 이유로,당신이'd do this:

return request
    .then(result => { console.log(result); return result; })
    .catch(error => { console.error(error); return Promise.reject(error); });

거나 사용하는throw:

return request
    .then(result => { console.log(result); return result; })
    .catch(error => { console.error(error); throw error; });
해설 (1)