cordova(javascript)file.move等到完成

时间:2014-11-26 10:44:17

标签: javascript cordova file-io cordova-plugins

我使用cordova(phonegap)构建Android / iOS应用程序 该应用程序必须缓存数据。它从服务器接收一个JSON文件,然后进行处理(数据显示为HTML)。

我的问题在于此代码:

function moveExercisesJSON(){
    console.log("moving exercises json");
    var fail = function(err) { console.log(err) }
    window.resolveLocalFileSystemURL(fileSave, function(file){
        window.resolveLocalFileSystemURL(store, function(store){
            file.moveTo(store, "exercises.json");
            console.log("done moving");
            displayExerciseList();
        },fail);
    },fail);
}

将JSON文件(exercises.json)下载到downloads-folder,然后打开此函数。 该文件通过file.moveTo移动。然后打开displayExerciseList()(处理/显示json文件中的数据)。

但是,似乎在file.moveTo完成之前调用了displayExerciseList()。 因此,我在第一次打开时总是落后一个版本(因为新版本尚未从downloads-folder中移出)

如何在调用displayExerciseList()之前等待.moveTo完成 计时器似乎不是一个解决方案,因为我必须对电影文件(大小不同)做同样的事情。

1 个答案:

答案 0 :(得分:2)

试试这个:

function moveExercisesJSON(){
    console.log("moving exercises json");
    var fail = function(err) { console.log(err) }
    window.resolveLocalFileSystemURL(fileSave, function(file){
        window.resolveLocalFileSystemURL(store, function(store){
            file.moveTo(store, "exercises.json",function(){
                console.log("done moving");
                displayExerciseList();
            },function(){
                console.log("error moving");
            });
        },fail);
    },fail);
}

moveTo函数具有成功和错误回调的可选参数。

有关详细信息,您可以查看this page about HTML5 file API(基于Cordova文件插件)