[컴] callback 함수를 asyn/await 로 변경하기

callback to async/await / how to convert callback function to promise / to async function / callback 을 Promise 로 변경하기

callback 함수를 asyn/await 로 변경하기

callback 을 Promise 로 변경하면 된다.

아래와 같은 callback 을 사용하는 함수가 있다고 하자.

requestTest(param1, param2, 
    function(result){ return 'success'; },
    function(err){ return 'err'; });
await 키워드는 Promise 가 끝날때까지 기다리고, return 을 주게 된다.
그러므로 우리는 Promise 로 만들면 된다. Promise 는 아래와 같은 모습을 갖고 있다.

new Promise(function(resolve, reject){})

우리가 할 일은 callback 부분에서 ‘성공’, ‘실패’ 부분에 Promise 의 resolve, reject 부분만 맞춰서 실행해 주게 만들면 된다.

new Promise(function(resolve, reject){
    ...
    resolve(...);
    ...
    reject(...);
})

그래서 아래처럼 변경해 주면 된다.

resolve(result); 에서 보내는 result 가 await 함수의 return 값이 된다. resovle를 호출하지 않으면 await 으로 호출후 다시 return 돼서 처리되지 못한다. (yield 를 호출하지 않는듯)
const param1, param2;

// ...

const promise = await new Promise(function(resolve, reject){
    requestTest(param1, param2,
        function(result){ 
            resolve(result); // 여기서 보내는 result 가 await 함수의 return 값이 된다.
            return;
        },
        function(err){
            reject(err);
            return; 
        }
    );
})




댓글 없음:

댓글 쓰기