Promise의 내부에서 resolve 함수를 호출하는 부분은 Promise 생성자 함수 내부입니다. 개발자는 Promise를 생성할 때 new Promise를 사용하고, 그 안에 비동기 작업을 정의합니다. 이때 resolve 함수를 개발자가 직접 호출하여 비동기 작업이 성공적으로 완료되었음을 알립니다.
예를 들어, 다음과 같이 resolve 함수를 호출합니다:
new Promise(function(resolve, reject) {
// 비동기 작업 수행
// 성공 시
resolve("성공적으로 완료됨");
// 실패 시
// reject("에러 발생");
})
그러면 new Promise 안에 콜백함수로 resolve, reject 함수 정의했는데 resolve말고 다른 이름을 쓸 수 있는거야??
new Promise 안에서 사용되는 함수 이름은 원하는 이름으로 변경할 수 있습니다. resolve와 reject는 관습적으로 사용되는 이름이지만, 실제로는 다른 이름을 사용해도 됩니다.
예:
new Promise(function(success, failure) {
// 비동기 작업 수행
// 성공 시
success("성공적으로 완료됨");
// 실패 시
// failure("에러 발생");
})
이렇게 resolve를 success로, reject를 failure로 변경한 것처럼 사용자가 원하는 이름으로 콜백 함수를 정의할 수 있습니다. 단, 관습적으로 resolve와 reject를 사용하는 편이 코드의 가독성을 높일 수 있습니다.
처음 코드
function call(name) {
return new Promise( function (resolve, reject) {
setTimeout( function() {
console.log(name);
resolve(name);
}, 1000);
})
}
function back() {
return new Promise( function (resolve, reject) {
setTimeout( function() {
console.log("back");
resolve("back");
}, 1000);
})
}
function hell() {
return new Promise( function (resolve, reject) {
setTimeout( function() {
resolve("callback hell");
}, 1000);
})
}
call('Lee')
.then( function(name) {
console.log( name + "반가워");
return back();
})
.then( function(txt) {
console.log( txt + "을 실행했구나");
return hell();
})
.then( function( message ) {
console.log( "여기는 " + message);
});