자바스크립트에서의 프로미스 체이닝
다음과 같은 프로미스가 있다고 가정해 보겠습니다:
let promise = new Promise(function(resolve, reject) {
setTimeout(function() {
resolve('string');
}, 3000);
});
프로미스가 완료되면 그 결과를 콘솔에 출력하겠습니다:
promise.then(
function(result) {
console.log(result); // 'string'을 출력합니다
}
)
이제 결과를 즉시 출력하지 말고, 결과를 수정한 후
return을 통해 반환해 보겠습니다:
promise.then(
function(result) {
return result + '!';
}
);
이 경우, 우리는 then 메서드의 결과에
또 다른 then 메서드를 적용하여
체인을 만들 수 있습니다. 이때 다음 메서드에는
이전 메서드가 return을 통해 반환한 값이 전달됩니다:
promise.then(
function(result) {
return result + '!';
}
).then(
function(result) {
console.log(result); // 'string!'을 출력합니다
}
);
이러한 방식으로 원하는 만큼 긴 체인을 구축할 수 있습니다:
promise.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'을 출력합니다
}
);