0
我仍然在學習節點編程....我正在使用express構建一個web應用程序,並且想要圍繞基於事件的非阻塞I/O包圍從其他嵌套回調函數在其他回調中。在節點中處理回調
這裏是我想了解關於使用回調無處不一個問題:
我不能這樣做在大多數情況下(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.
});
如果我叫user.save()的randomBytes代碼之後(不是內它的回調)令牌總是被設置?
請您描述正確的方式來處理這種情況嗎? (也就是說,如果函數不允許同步行爲爲randomBytes)。 –