개발 노트

util 모듈 - promisify() 본문

Node

util 모듈 - promisify()

한츄 2023. 12. 21. 09:36

node.js의 내장함수인 util모듈 중에 promisify라는 함수가 있습니다. (Node 8.0.0 부터 추가)

Promise로 되어있지 않은 레거시한 모듈들을 비동기로 실행할 때 유용합니다.

 

Promisify는 함수의 마지막 인자로 콜백함수를 받는 유틸 함수 입니다.

Promise를 사용하기

일반적으로 사용했던 promise를 사용하는 방법입니다.

async function executeQuery() {
    try {
        const query = "SELECT * FROM your_table";
        const results = await poolLocal.query(query);
        console.log(results);
    } catch (error) {
        console.error(`[Error] 쿼리 실행 중 오류가 발생했습니다: ${error.message}`);
    }
}

executeQuery();

 

 

같은 코드를 아래와 같이 사용할 수 있습니다.

 

Promisify를 사용하기

promise로 감싸주어 호출 하는 대신 promisify를 사용하면 가독성이 훨씬 좋아집니다

const mysql = require("mysql");
const util = require("util");
const config = require("./config");

const poolServer = mysql.createPool(config.db_server);

/* poolServer 함수 자체를 Promisify의 인자로 전달*/
poolServer.query = util.promisify(poolServer.query);

/* promise와 마찬가지로 then이나 catch를 통해 에러 스트림을 추가로 연결가능*/
const rows = await poolLocal.query("쿼리문")

 

'Node' 카테고리의 다른 글

Winston 모듈  (0) 2023.12.22
Path모듈  (0) 2023.12.21
mysql 연동 시 datetime 에러  (0) 2023.12.19
Connection과 Connection Pool  (0) 2023.12.19
require()와 module.exports  (0) 2023.12.19