我使用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完成 计时器似乎不是一个解决方案,因为我必须对电影文件(大小不同)做同样的事情。
答案 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文件插件)