我想执行一个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