[Node] promisify로Callback 패턴Promise 쉽게 만들게
Published in
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 블록안에서 유용하게 사용할 수 있습니다.