这就是我所拥有的:
#! /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) }) })
即使我使用readdirSync
输出仍然是异步的:
alex@alex-K43U:~/node/readFiles$ node index.js foo 1 foo 3 foo 2
如何修改代码使输出变得同步?
alex@alex-K43U:~/node/readFiles$ node index.js foo 1 foo 2 foo 3
Gazler.. 37
您需要使用readFileSync
,您的方法仍然是异步读取文件,这可能导致打印内容乱序,具体取决于每次读取发生回调的时间.
var fs = require('fs'), files = fs.readdirSync(__dirname + '/files/'); files.forEach(function(file) { var contents = fs.readFileSync(__dirname + '/files/' + file, 'utf8'); console.log(contents); })
Peter Paul K.. 6
那是因为你异步读取文件.尝试:
#! /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); });
'fs.readFileSync()'的NodeJS文档
您需要使用readFileSync
,您的方法仍然是异步读取文件,这可能导致打印内容乱序,具体取决于每次读取发生回调的时间.
var fs = require('fs'), files = fs.readdirSync(__dirname + '/files/'); files.forEach(function(file) { var contents = fs.readFileSync(__dirname + '/files/' + file, 'utf8'); console.log(contents); })
那是因为你异步读取文件.尝试:
#! /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); });
'fs.readFileSync()'的NodeJS文档