我想執行一個for-loop結構內的異步方法,然後顯示結果。我相信問題是在cryto.randomBytes
方法調用回調之前,for-loop增量。我將如何正確執行這個for循環?如何正確執行for循環內的異步方法?
var crypto = require('crypto');
var nimble = require('nimble');
var codes = [];
nimble.series([
function(callback){
for(var i = 0; i < 100;i++){
crypto.randomBytes(64, function(ex, buf) {
if (ex) throw ex;
codes[i] = buf.toString('hex');
});
}
callback();
},
function(callback){
for(var i = 0; i < codes.length;i++){
console.log("Ticket " + i + ":" + codes[i]);
}
callback();
}]);
很多不必要的關閉在這裏創建。 – mscdex
@mscdex:這可能可以簡化,因爲在這種特殊情況下,這些值是隨機的,所以它們在數組中的最終順序應該沒有關係。除非不同的數字需要不同的時間才能生成,所以它實際上引入了隨機數的可預測性,在這種情況下,它將大大降低隨機生成器的強度。 – Guffa
後者中的任何一個與創建閉包有什麼關係? – mscdex