我在这里关注Electron文件系统教程:
How to choose , read, save, delete or create a file with Electron Framework
其中包括以下代码以提取加载文件对话框:
document.getElementById('select-file').addEventListener('click',function(){
dialog.showOpenDialog(function (fileNames) {
if(fileNames === undefined){
console.log("No file selected");
}else{
document.getElementById("actual-file").value = fileNames[0];
readFile(fileNames[0]);
// myData = readFile(fileNames[0]); <---
}
});
},false);
以下代码实际读取文件:
function readFile(filepath) {
fs.readFile(filepath, 'utf-8', function (err, data) {
if(err){
alert("An error ocurred reading the file :" + err.message);
return;
}
document.getElementById("content-editor").value = data;
});
}
如您所见,最后一行使用导入的数据更新DOM。但是,我想将数据返回给我的调用函数,因为它不是HTML。请注意第一个剪切结束时的注释行。这就是我想要做的事情。
实际上,XML必须被处理而不是转储到DOM中。但是我所有返回数据的尝试(特别是&#39;返回数据;&#39;无论是最后一行还是最后一个大括号之前)都失败了。调用函数都不会导致获取数据。
调用函数是否需要等待这个函数完成?或者,更有可能的是,我没有正确地从这种类型的函数返回数据。非常感谢任何帮助。
答案 0 :(得分:0)
据我了解,这应该做你想要的。
//更新;从“返回”变为回调函数。
q.scoregraph
答案 1 :(得分:0)
由于您的readFile(filepath)
正在执行异步文件读取操作,因此您无法在此处使用简单返回。但是,您可以将回调传递给readFile
函数,并在稍后使用数据完成读取操作时调用它。像这样。
创建回调
function fileReadComplete(data) {
myData = data;
// Do whatever you want
}
并将其称为。
readFile(fileNames[0], fileReadComplete);
更改readfile函数:
function readFile(filepath, callback) {
fs.readFile(filepath, 'utf-8', function (err, data) {
if(err){
alert("An error ocurred reading the file :" + err.message);
return;
}
callback(data);
document.getElementById("content-editor").value = data;
});
}