TIL/Node JS
promisify, callback, promise, async
by koreashowme
2019. 10. 20.
// callbackify 다시 콜백으로 되돌려줌.
// promisefy!!!!!!! 제일 중요하다.
// deprecate 서비스 중단 하기전 미리 warning 줄 수 있음.
const util = require('util');
const crypto = require('crypto');
const dontuseme = util.deprecate( (x,y) =>{
console.log(x + y);
}, ' 조금 있으면 지원하지 않습니다. (12월) ')
dontuseme(1,2);
// 지원이 조만간 중단될 메서드임을 알려줄때 사용
// ex) 서비스가 바로 망가지는 것을 막아주기 위해 알려줌.
const randomBytesPromise = util.promisify(crpyto.randomeBytes);
const pbkdf2Promise = util.promisify(crypto.pbkdf2);
// randomeBytes는 따로 promies를 사용 못하기 때문에 util.promisify를 사용함.
crypto.randomeBytes(64, (err) => {
const salt = buf.toString('base64');
crypto.pbkdf2('kim', salt, 123213, 64, 'sha512', (err, key) => {
console.log('pw', key.toString('base64'));
console.timeEnd('암호화');
});
});
randomBytesPromise(64)
.then((buf) => {
const salt = buf.toString('base64');
return pbkdf2Promise('kim', salt, 123213, 64, 'sha512');
})
.then((key) => {
})
.catch((err) => {
console.error(err);
})
(async (() => {
const buf = await randomBytesPromise(64);
const salt = buf.toString('base64');
const key = await pbkdf2Promise('kim', salt, 123213, 64, 'sha512');
console.log('pw', key.toString('base64'));
}))
comment