J'essaie d'exécuter une méthode asynchrone dans une construction for-loop, puis d'afficher le résultat. Je crois que le problème est que les incréments de la boucle for avant la méthode cryto.randomBytes
appelle le rappel. Comment pourrais-je correctement exécuter cette boucle for?Comment exécuter correctement une méthode asynchrone dans une boucle 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();
}]);
Beaucoup de fermetures inutiles sont créées ici. – mscdex
@mscdex: Cela pourrait peut-être être simplifié car, dans ce cas particulier, les valeurs sont aléatoires, donc peu importe l'ordre dans lequel elles se retrouvent dans le tableau. À moins que des nombres différents prennent un temps différent à produire, de sorte qu'il introduit réellement la prévisibilité aux nombres aléatoires, auquel cas cela réduirait fortement la force du générateur aléatoire. – Guffa
Qu'est-ce que l'un de ces derniers a à voir avec la création de fermetures? – mscdex