【发布时间】:2014-09-09 10:02:30
【问题描述】:
这是一个简单的函数,它应该返回当前目录中给定文件的内容。
它正确读取文件内容,但是当我想返回它时,它没有这样做。读取数据时调用reader.onloadend。如何让它从该函数返回数据?
readFile: function(fileName) {
app.fs.data = "{}"; // clear whatever was stored before
var hasFile = function(fileEntry) {
var gotFile = function(file) {
var reader = new FileReader();
reader.onloadend = function(evt) {
app.fs.data = evt.target.result;
console.log("Read as Text: " + file.name);
console.log("Data: " + app.fs.data); // app.fs.data contains correct data
};
reader.onerror = function(e) {
console.log("Error: " + e);
};
reader.readAsText(file);
};
fileEntry.file(gotFile, app.fs.fail);
};
app.fs.dir.getFile(fileName, null, hasFile, app.fs.fail);
console.log("Actual data: " + app.fs.data); // app.fs.data contains INCORRECT data "{}"
return app.fs.data;
}
控制台输出:
Actual data: {}:92
Read as Text: article.json:81
Data: {"id":1405518906105,"name":"My Name","category":0,"abstract":"","content":"","published":false,"lastPublish":null}:82
【问题讨论】:
标签: javascript html cordova closures html5-filesystem