본문 바로가기
JavaScript│Node js

callback함수 promisify 하기

by 자유코딩 2020. 8. 21.

nodejs 에서 몇가지 모듈들은 promise 형태로 제공되지 않는 경우가 있다.

 

아래 코드처럼 콜백을 인자로 전달해서 실행해야 한다.


const makePromisify = (callback) => {
  return callback(null, 'data');
}

makePromisify((err, data) => {
  console.log(data);
})

 

이렇게 콜백을 전달하는 함수들을 promisify 해서 바꾸면 편리하다.

 

어떻게 바꾸는지 차근차근 살펴본다.

 

먼저 promisify 를 넣게 되면 아래와 같이 된다.

 

function을 인자로 전달해야 한다.

그럼 전달해보자.

전달했다.

이렇게 하면 func 의 값이 Promise 를 리턴하는 함수가 된다.

그럼 저기에 호출을 하면 then 을 사용할 수 있다는 말이 된다.

 

아래 코드처럼도 되고

이렇게도 된다.

이게 then 이 된다는 것은 아래 코드랑 유사한 상태라는 것이다.

 

promise 는 async await 에서 사용할 수 있다.

const { promisify } = require('util');

const makePromisify = (callback) => {
  return callback(null, 'data');
}

const func = promisify(makePromisify)

async function asyncFunc() {
  const data = await func();
  console.log(data);
}

asyncFunc();

 

 

댓글