Voici ce que j'ai:
#! /usr/bin/env node
var fs = require('fs'),
files = fs.readdirSync(__dirname + '/files/'),
files.forEach(function(file) {
fs.readFile(__dirname + '/files/' + file, 'utf8', function (error, data) {
console.log(data)
})
})
Même si j'utilise readdirSync
la sortie est toujours asynchrone:
alex@alex-K43U:~/node/readFiles$ node index.js
foo 1
foo 3
foo 2
Comment modifier le code pour que la sortie devienne synchrone?
alex@alex-K43U:~/node/readFiles$ node index.js
foo 1
foo 2
foo 3
Vous devez utiliser readFileSync
, votre méthode lit toujours les fichiers de façon asynchrone, ce qui peut entraîner l'impression du contenu en désordre selon le moment où le rappel se produit pour chaque lecture.
var fs = require('fs'),
files = fs.readdirSync(__dirname + '/files/');
files.forEach(function(file) {
var contents = fs.readFileSync(__dirname + '/files/' + file, 'utf8');
console.log(contents);
})
C'est parce que vous lisez le fichier de manière asynchrone. Essayer:
#! /usr/bin/env node
var fs = require('fs'),
files = fs.readdirSync(__dirname + '/files/'),
files.forEach(function(file) {
var data = fs.readFileSync(__dirname + '/files/' + file, 'utf8');
console.log(data);
});
Avez-vous vu readFileSync
? Je pense que cela pourrait être votre nouvel ami.