본문 바로가기

Nodejs

async / await 와 Promise (async 안에서 promise 처리)

반응형

상황#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가 업데이트 된 것 또한 확인 가능하다.

 

 

반응형