
오늘은 Node.js 내장 모듈인 util에 대해 알아볼 것이다.
util 모듈은 각종 편의 기능을 모아둔 모듈이다.
- deprecate와 promisify가 자주 쓰인다.
사용 방법
util.js
const util = require('util');
const crypto = require('crypto');
const dontUseMe = util.deprecate((x, y) => {
console.log(x + y);
}, 'dontUseMe 함수는 deprecated되었으니 더 이상 사용하지 마세요!');
dontUseMe(1, 2);
const randomBytesPromise = util.promisify(crypto.randomBytes);
randomBytesPromise(64)
.then((buf) => {
console.log(buf.toString('base64'));
})
.catch((error) => {
console.error(error);
});
내가 어떤 라이브러리를 배포하고 그 라이브러리를 사용자들이 사용할 경우 해당 라이브러리 안의 함수를 잘못 만들었거나 더 이상 쓰지 않는 경우에 위 util.js 소스처럼 util.deprecate를 사용하여 경고할 수 있다.
(기존 코드에 문제가 있더라도 사용하고 있는 사람들이 있을 수 있기에 함부로 삭제해선 안된다.)
util.promisify는 콜백 패턴을 프로미스 패턴으로 바꾸어준다.
자바스크립트가 콜백에서 프로미스 개념으로 많이 넘어가고 있는데 옛날 함수들은 콜백으로 되어 있는 경우가 많다.
노드에서는 아직 프로미스를 지원하지 않는 경우가 많기에 util.promisify를 통해 콜백 함수를 감싸주면 프로미스가 되어서
then / catch 를 사용할 수 있다.
사용 방식은 위 소스와 같이 바꿀 함수를 인자로 제공하면 된다.
이렇게 바꾸면 async/await 패턴까지 사용할 수 있어서 편리하다.
(단, 콜백이 (error, data) => {} 형식이어야 한다.)
프로미스를 콜백으로 바꾸는 util.callbackify도 있지만 자주 사용되지는 않는다.
'Node.js' 카테고리의 다른 글
Node.js 내장 모듈 - child_process (0) | 2023.05.15 |
---|---|
Node.js 내장 모듈 - worker_threads (2) | 2023.05.12 |
Node.js 내장 모듈 - crypto (0) | 2023.05.06 |
Node.js 내장 모듈 - url (0) | 2023.05.04 |
Node.js 내장 모듈 - path (0) | 2023.05.03 |