私はまだノードプログラミングを学んでいます... Expressを使用してWebアプリを構築しており、他のコールバック内の他の関数からのネストされたコールバックに関して、イベントベースのノンブロッキングI/Oに頭を悩ませたいと思っています。
どこでもコールバックを使用することに関して、私が理解しようとしている問題の 1 つを次に示します。
ほとんどの場合、これを行うことはできません (crypo では、この方法で同期が機能するため、この例は問題ありません)。
user.reset_password_token = require('crypto').randomBytes(32).toString('hex');
上記の例が機能することを確認する前に、これを行う必要がありました。
User.findOne({ email: req.body.username }, function(err, user) {
crypto.randomBytes(256, function(ex, buf) {
if (ex) throw ex;
user.reset_password_token = buf.toString('hex');
});
user.save(); // can I do this here?
//will user.reset_password_token be set here??
// Or do I need to put all this code into the randomBytes callback...
//Can I continue programming the .findOne() callback here
// with the expectation that
//user.reset_password_token is set?
//Or am I out of bounds...for the crypto callback to have been called reliably.
});
If I call user.save() after the randomBytes code (not inside it's callback) will the token always be set?