반응형
상황#1 fn 함수를 async/await하고 싶은데, 그안에 비동기 함수(hasher)를 사용해야 할 때. 처리방법.
1. await를 사용할 함수를 생성.
2. return 타입을 Promise 객체로 넘겨준다.
3. promise 안에서 resolve로 넘겨줄 것과, reject로 넘겨줄 것을 만든다.
4. await로 받았을 때, 에러가 있을 수 있으므로, try-catch로 처리가 필요하다
*(중요) Promise 사용시 필수!
console.log('hello');
const pbkdf = require('pbkdf2-password')
const hasher = pbkdf();
console.log('hi1~')
const fn = async ()=>{
const user={
id : '1'
,pw : '1'
}
try{
const hash = await p(user);
if(hash){
console.log('hash is true',hash);
}
console.log('hi2~')
}catch(e){
console.log(e)
}
}
const p = (user)=>{
return new Promise((resolve,reject)=>{
if(!user.pw){
reject(new Error('password is undefined'))
}else{
hasher({password : user.pw},(err,pass,salt,hash)=>{
console.log(hash);
user.salt = salt;
user.pw = hash;
resolve(hash);
})
}
})
d}
fn();
이제 fn 함수가 순차적으로 실행 하는 것을 확인 할 수 있다.
# user 객체를 ref참조 하므로, user에 salt와 pw가 업데이트 된 것 또한 확인 가능하다.
반응형
'Nodejs' 카테고리의 다른 글
Typescript tsconfig.json 옵션들 톺아보기 (0) | 2023.07.19 |
---|---|
Node.js 백엔드 디렉토리 구조 (0) | 2023.07.19 |
[NODEJS 입문]14.(pbkdf2-password) 비밀번호 암호화 (0) | 2018.06.12 |
[NODEJS 입문]13.(사용자 DELETE) 사용자 삭제 (0) | 2018.06.11 |
[NODEJS 입문]12.(사용자 UPDATE) 사용자 정보 변경 (0) | 2018.06.11 |