상세 컨텐츠

본문 제목

util(deprecate, promisify) - Nodejs

Programming/Concept

by 쌩우 2019. 5. 14. 16:04

본문

deprecate
특정 함수에 대하여, 지원이 만료될 것으로 예상되는 것에 deprecate로 감싸주어 미리 표시를 해준다.

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

const dontuseme = util.deprecate((x,y) => {
    console.log(x + y);
}, '이 함수는 00부로 지원하지 않습니다.')

dontuseme(1, 2);
//node로 해당 코드 실행 시, 원하는 값 3은 얻을 수 있지만, Deprecation Warning이라는 주의와 함께 메시지가 표시된다.

promisify
promise를 지원하지 않는 (error, data) => {} 모양의 콜백은 util.promisify를 이용해 프로미스로 만들 수 있다.

const crypto = require('crypto');

const randomBytesPromise = util.promisify(crypto.randomBytes);
const pbkdf2Promise = util.promisify(crypto.pbkdf2);
//promise를 지원하지 않는 crypto.randomBytes를 감싸줌으로서, 
//콜백 depth를 깊이 들어갈 필요없게 만들어준다.

crypto.randomBytes(54, (err, buf) => {
    const salt = buf.toString('base64');
    console.log('salt', salt);
    crypto.pbkdf2('swoo바보', salt, 1203947, 64, 'sha512', (err, key) => {
        console.log('password', key.toString('base64'));
    });
});

randomBytesPromise(64)
    .then((buf) => {
        const salt = buf.toString('base64');
        return pbkdf2Promise('swoo바보', salt, 1203947, 64, 'sha612');
    })
    .then((key) => {
        console.log('password', key.toString('base64'));
    })
    .catch((err) => {
        console.error(err);
    })
//콜백을 promise로 1단 변신시켜주고

  async (() => {
      const buf = await randomBytesPromise(64);
    const salt = buf.toString('base64');
    const key = pbfkdf2Promise('swoo바보', salt, 1203947, 64, 'sha512');
  })
  //async, await으로 2단 변신까지 시킬 수 있게 된다.

util.callbackify는 promisify를 반대로 하여, 다시 콜백으로 만들어주는 것이다

관련글 더보기

댓글 영역