javascript - js异步读取文件

标签 javascript node.js

我有一个文件列表。我有兴趣读出它们的名字和它们包含的行数。我知道有更简单的方法可以做到这一点,但是有没有办法使用下面代码的一般结构来完成此任务?

var fs = require('fs');

var fileList = ['./newtest.js', './globtime.js', './newtest.js'];

var numLines = 0;
var filesCount = 0;

function returnLines () {
    console.log('the length of all files is ' + numLines);
}

function readLines(files) {
    for (file in files) {
        fs.readFile(files[file], function(err, data) {
            if (data != undefined) {
                var array = data.toString().split("\n");
                numLines += array.length;
                filesCount +=1;
                console.log('the length of ' + files[file] + ' is ' + array.length); // get this to work .. 
                if (filesCount == files.length) {
                    returnLines();
                }
            }
       });
    }
}

readLines(fileList);

最佳答案

你可以用闭包来做到这一点:

var fs = require('fs');

var fileList = ['./newtest.js', './globtime.js', './newtest.js'];

var numLines = 0;
var filesCount = 0;

function returnLines () {
  console.log('the length of all files is ' + numLines);
}

function readLines(files) {

  var readFile = function(name){
    return fs.readFile(name, function(err, data) {
      if (data != undefined) {
        var array = data.toString().split("\n");
        numLines += array.length;
        filesCount +=1;
        console.log('the length of ' + name + ' is ' + array.length); // get this to work .. 
        if (filesCount == files.length) {
            returnLines();
        }
      }
    });
  };

  for (file in files) {
    readFile(files[file]);    
  }
}

readLines(fileList);

关于javascript - js异步读取文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35930674/

相关文章:

javascript - MEAN API 请求方法问题

node.js - npm 审计修复没有改变任何东西

node.js - 在nodejs中无法获取正确的路由值?

javascript - 如何在具有动态加载的不受信任模块的应用程序中沙箱代码?

javascript - 如何通过浏览器开发工具知道用户已到达页面末尾

javascript - JavaScript中这些正则表达式的含义是什么?

php - 将一些 PHP 代码合并到我的 HTML 文档中

Javascript删除导航器对象

javascript - 来自 div 的行跟随另一个特定的 div

javascript - 如何从我的 webpack 2 配置创建/生成/导出文件以在我的 React 代码中使用?