자바스크립트에서의 프로미스 체이닝

다음과 같은 프로미스가 있다고 가정해 보겠습니다:

javascriptlet promise = new Promise(function(resolve, reject) {
  setTimeout(function() {
    resolve('string');
  }, 3000);
});

프로미스가 완료되면 그 결과를 콘솔에 출력하겠습니다:

javascriptpromise.then(
  function(result) {
    console.log(result); // 'string'을 출력합니다
  }
)

이제 결과를 즉시 출력하지 말고, 결과를 수정한 후 return을 통해 반환해 보겠습니다:

javascriptpromise.then(
  function(result) {
    return result + '!';
  }
);

이 경우, 우리는 then 메서드의 결과에 또 다른 then 메서드를 적용하여 체인을 만들 수 있습니다. 이때 다음 메서드에는 이전 메서드가 return을 통해 반환한 값이 전달됩니다:

javascriptpromise.then(
  function(result) {
    return result + '!';
  }
).then(
  function(result) {
    console.log(result); // 'string!'을 출력합니다
  }
);

이러한 방식으로 원하는 만큼 긴 체인을 구축할 수 있습니다:

javascriptpromise.then(
  function(result) {
    return result + '1';
  }
).then(
  function(result) {
    return result + '2';
  }
).then(
  function(result) {
    return result + '3';
  }
).then(
  function(result) {
    console.log(result); // 'string123'을 출력합니다
  }
);