바르고 뜨겁게

[NodeJS] util 모듈(deprecate, promisify) 본문

자바스크립트/Node Js

[NodeJS] util 모듈(deprecate, promisify)

RightHot 2018. 12. 27. 00:05


util 모듈(deprecate, promisify)

  • deprecate

const util = require('util');

const dontUseMe = util.deprecate((x,y)=>{
   console.log(x+y);
},'이 함수는 2019-01-01 까지만 지원합니다.');

dontUseMe(1,2);

3
(node:20972) DeprecationWarning: 이 함수는 2019-01-01 까지만 지원합니다.


  • promisify

(error,data)=>{}형태의 콜백은 프로미스로 만들 수 있다.

프로미스 형태는 async/await 변경 가능하다

const util = require('util');
const crypto = require('crypto');


// 아래와 같은 콜백형태를 프로미스로 변경
crypto.randomBytes(64, (err, buf) => {
   const salt = buf.toString('base64');
   console.log('랜덤 salt: ', salt);
   console.time('암호화시간');
   crypto.pbkdf2('password', salt, 1055351, 64, 'sha512', (err,key)=>{
       console.log('암호화 완료: ', key.toString('base64'));
       console.timeEnd('암호화시간');
  });
});


// 아래처럼 하면 프로미스 형태로 변경가능하다
const randomBytesPromise = util.promisify(crypto.randomBytes);
const pbkdf2Promise = util.promisify(crypto.pbkdf2);

randomBytesPromise(64)
  .then((buf) =>{
       const salt = buf.toString('base64');
       return pbkdf2Promise('password',salt,1055351, 64, 'sha512');
  })
  .then((key)=>{
       console.log('암호화 완료: ', key.toString('base64'));
  })
  .catch((err)=>{
       console.error(err);
  })


// async/await 형태로 또 변경 가능
(async () => {
   const bug = await randomBytesPromise(64);
   const slat = buf.toString('base64');
   const key = pbkdf2Promise('password', salt, 1055351, 64, 'sha512');
   console.log('암호화 완료: ',key.toString('base64'));
});


Comments