관리 메뉴

CASSIE'S BLOG

Promise (비동기 작업 정의할 때) 본문

PROGRAMMING/JAVASCRIPT

Promise (비동기 작업 정의할 때)

ITSCASSIE1107 2023. 12. 25. 12:34

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);
    });

반응형