javascript - readAsText(file) 只读取目录中的最后一个文件

标签 javascript google-chrome google-chrome-app filereader html5-filesystem

我正在尝试读取用户目录中的所有文件并在文本框中显示其内容。

读取单个文件效果很好,但是,当我尝试读取整个目录时,事情变得很奇怪。

遍历目录时,仅正确读取目录中的最后一个文件。无论目录中有多少文件,此行为都是一致的。

这是我用来读取文件的代码:

results.forEach(function(item) {
  reader = new FileReader();

  // This line is reached
  console.log("filename: " + item.name);

  item.file(function(File) {
    // This one only for the last file in that directory
    reader.readAsText(File);
    console.log("success");
  });

  // This line is reached
  console.log("read: " + item.name);
});

这是日志(来自开发工具):

filename: app.js
read: app.js
filename: main.js
read: main.js
filename: SharedPreferences.js
read: SharedPreferences.js
filename: KeyConstants.js
read: KeyConstants.js
success

如果您有任何问题,请询问他们,我已经尝试了几个小时了,我已经慢慢厌倦了一遍又一遍的失败..

最佳答案

发生这种情况是因为 FileReader 异步工作,这大约意味着它在代码继续执行的同时开始执行任务(读取文件)。如果您想在加载完成后立即对每个文件的结果执行某些操作,则需要使用此方法:

reader.onloadend = function(evt) {
    // file is loaded
    // do something with evt.target object
};

关于javascript - readAsText(file) 只读取目录中的最后一个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42496459/

相关文章:

javascript - 在node js中获取post请求的参数

javascript - 如何在运行脚本之前等待页面完成所有内容的加载或如何最好地检测主要的 DOM 更改

javascript - 无法使用 chrome api 从 hid 设备获取任何输入数据

javascript - SQL.js(SQLite JavaScript 实现)可以立即自动写入磁盘吗?

javascript - javascript中按位运算符的性能

c# - 如果 AutoCompleteExtender 未返回任何结果,则重置 HiddenField

javascript - 增加 React 中的超时时间 - neo4j 应用程序

java - Google Appengine 静态文件无法加载资源:net::ERR_CONTENT_DECODING_FAILED

javascript - 条码检测器 DOMException : Barcode detection service unavailable (in Chrome)

google-chrome - 为什么我收到无法调用未定义的方法 'addListener'?