[Node] promisify로Callback 패턴Promise 쉽게 만들게

Harry The Great
해리의 유목코딩
2 min readJan 4, 2020

레거시한 모듈들 리팩토링하다 알게된 내장함수입니다. Node 8.0.0부터 추가되었다는데 왜 이제 알게된건지.. 🤔🤔 평소에는 많이 쓸일이 없지만 Promise로 되어있지 않은 레거시한 모듈들을 비동기로 실행할때 유용합니다.

promisify는 함수의 마지막 인자가 콜백함수(err,value) => … 와같은경우 Promise로 쉽게 감싸줄 수 있는 유틸리티 함수입니다.

Promise로 감싸는 경우

위 extact 함수는 path를 인자로 받은 후 성공한다면 콜백함수로 성공여부를 전달해줍니다. 콜백을 Promise로 처리되어있지 않기때문에 async 블록안에서는 제대로 사용할 수 없습니다.

일반적으로는 Promise로 감싸주어 호출하는 방법입니다. 하지만 Promisify를 사용하면 훨씬 더 가독성 좋게 작성할 수 있습니다.

promisify 사용하기

util.promisify가 Promise 형태의 함수를 리턴하고 await만 붙이면 끝입니다. 가독성도 상당히 좋아집니다. Promise 패턴을 사용하지 않거나 그 이전에 나온 레거시한 라이브러리들을 async 블록안에서 유용하게 사용할 수 있습니다.

--

--

Harry The Great
해리의 유목코딩

Android & IOS Developer 😀 미디움 이외에 스니펫이나 디버그노트로 활용하는 https://www.harrymikoshi.com/ 블로그도 운영하고있습니다.