import bcrypt from 'bcrypt';
export default class Hash {
static hashPassword (password: any): string {
let hashed: string;
bcrypt.hash(password, 10, function(err, hash) {
if (err) console.log(err);
else {
hashed = hash;
}
});
return hashed;
}
}
此函数每次都返回undefined
答案 0 :(得分:1)
当您return hashed
时,哈希函数尚未完成。
您希望在回调函数本身内处理散列密码,或者像Aluan所指出的那样处理异步函数。
一种方法是使用承诺
export default class Hash {
return new Promise((resolve, reject) => {
static hashPassword (password: any): string {
let hashed: string;
bcrypt.hash(password, 10, function(err, hash) {
if (err) reject(err);
else {
resolve(hash);
}
});
}
})
}
然后,当您想要调用哈希时,将其称为承诺
Hash.then(hashed => {
console.log(hashed)
}).catch(err => {
console.log(err)
})