Simple nodejs rappel exemple avec fs.readFile

Je suis en train d'apprendre la programmation asynchrone et a été aux prises avec la leçon 4 de nodeschool.io avec la mise en œuvre d'un async io avec des rappels.

En gros, je suis en train d'utiliser fs.readFile pour compter le nombre de retours à la ligne dans un fichier en utilisant une fonction de rappel.

Voici mon code:

var fs = require('fs');
var pathToFile = process.argv[2];

function counter(callback) {
    var buffer = fs.readFile(pathToFile, function (err, data) {
    var bufferString = buffer.toString();
    var bufferStringSplit = bufferString.split('\n');
  });
  callback();
}

function logMyNumber() {
  console.log(bufferStringSplit.length-1);
}

counter(logMyNumber);

Je comprends que les rappels sont exécutées une fois la ligne de code est terminée en cours d'exécution, afin de ne pas le

var bufferString = buffer.toString();
var bufferStringSplit = bufferString.split('\n');

être appelée après la fs.readFile() a fini de lire le fichier à partir du disque?

Puis enfin le callback() appelle logMyNumber, qui devrait juste sortie le nombre de lignes du fichier.

  • Votre rappel déclare une variable data mais à l'intérieur de votre rappel de la référence de buffer. Ensuite, vous faites référence à bufferStringSplit dans une autre fonction qui n'est pas déclarée. Aussi, votre callback dans counter est appelé à l'extérieur de la fonction de rappel de readFile donc elle va être exécutée avant l' readFile finitions. Suivez la chaîne de rappels.
InformationsquelleAutor enducat | 2013-12-18