Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/466.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript phonecap对文件系统的同步调用_Javascript_Cordova - Fatal编程技术网

Javascript phonecap对文件系统的同步调用

Javascript phonecap对文件系统的同步调用,javascript,cordova,Javascript,Cordova,我在使用phonegap进行异步调用时遇到了一个问题,因为我需要获得以下函数的返回以处理其余代码 所以我有以下功能: function getFileContent(fileName) { var content = null; document.addEventListener("deviceready", function() { window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, function(

我在使用phonegap进行异步调用时遇到了一个问题,因为我需要获得以下函数的返回以处理其余代码

所以我有以下功能:

function getFileContent(fileName) {
    var content = null;
    document.addEventListener("deviceready", function() {
        window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, function(fileSystem) {
            fileSystem.root.getFile("data/" + fileName, null, function(fileEntry) {
                fileEntry.file(function(file) {
                    var reader = new FileReader();
                    reader.onloadend = function(evt) {
                        content = evt.target.result;
                        alert(content);
                    }
                    reader.readAsText(file);
                });
            }, fail);
        }, fail);
    }, false);
   return content;
}
但是当我尝试
alert(getFileContent(fileName))
首先我得到
null
,然后是带有文件内容的警报

我尝试在返回之前添加以下行,但没有执行任何操作:

while (content == null);

我希望避免使用类似于
setTimeout
的东西,因为我需要立即得到响应,而不是像SHANK所说的那样在延迟后

我必须调用最后一个回调函数中的最后一个函数,所以我只是将我的函数更改为:

function getFileContent(fileName, call) {
    var callBack = call;
    var content = null;
    var args = arguments;
    var context = this;
    document.addEventListener("deviceready", function() {
        window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, function(
                fileSystem) {
            fileSystem.root.getFile("data/" + fileName, null, function(
                    fileEntry) {
                fileEntry.file(function(file) {
                    var reader = new FileReader();
                    reader.onloadend = function(evt) {
                        args = [].splice.call(args, 0);
                        args[0] = evt.target.result;
                        args.splice(1, 1);
                        callBack.apply(context, args);
                    }
                    reader.readAsText(file);
                });
            }, fail);
        }, fail);
    }, false);
}

现在它开始工作了

您需要执行的任何后期读取文件内容都应该是回调函数(或从回调函数调用的另一个函数)的一部分。上面的代码看起来很有前途,我很高兴它可以工作,但不清楚如何调用它。传递到getFileContent()的内容是什么?传递要读取的内容的文件名,以及执行完所有操作(打开并读取)后将调用的函数