カスタムの約束を書いたときに悪い習慣を使っているのだろうかと思います。約束を書いたときのパターンが悪いですか?
私は次のような状況があります。
generateHash(password){
return new Promise((resolve, reject) => {
bcrypt.genSalt(10).then(salt => {
bcrypt.hash(password, salt).then(hash => {
resolve(hash)
}).catch(reject)
}).catch(reject)
})
}
generateHash()は、ハッシュされたパスワードを含む約束を返さなければなりません。 .genSalt()は約束を返し、.hash()も返します。私が必要とするものは、.hash()によって返される約束を返すためにgenerateHash()ですが、それは内部の.genSalt()なので、このようなことは起こりません。私は、この関数がカスタムの約束を返し、その中にあるすべてのものが完全に機能していたと思っていましたが、そのような入れ子の約束が悪い習慣であり、ひどい考え方であるかどうか疑問に思っています。私がやった
もう一つは、そのようなコールバックを使用して、それより伝統的な方法でアプローチです:
return new Promise((resolve, reject) => {
bcrypt.genSalt(10, function (err, salt) {
bcrypt.hash(password, salt, function (err, hash) {
if (err) return reject(err)
resolve(hash)
});
});
})
私は優れていると種類の方法についてのアイデアそう約束に固執したい方法の提案に開いています可能な限り最善の方法を約束してそれをすることは大いに感謝されます。
ああを行うことができます。私は寝るべきだ。私は本当にそれがどうやって明らかではなかったのか分かりません。みんなありがとう! –
リファクタリングに関する提案はありますか? :) 'のregisterUser(NEWUSER){ \t \t \tリターン新しいプロミス((決意、リジェクト)=> { \t \t \t \t encryption.generateHash(newUser.password) \t \t \t \t \t .then((ハッシュ)=> { \t \t \t \t \t \t newUser.password =ハッシュ \t \t \t \t \t \tリターンUser.create(NEWUSER).then(解決).catch(拒否) \t \t \t \t \t}) \t \t \t \t \t .catch((エラー)=> { \t \t \t \t \t \tコンソール。ログ(エラー) \t \t \t \t \t}) \t \t \t}) \t \tは} ' –
ネヴァーマインドは、それを修正します。ベッドに直進。信じられないほどの睡眠不足があなたにします。 –