我有以下代码:
function download_img(imgToDownload, imgToRemove){
var url = remote_url+imgToDownload; // image url
root_path = get_root_path();
var flag = "working";
var flag_delete = false;
var imageToDownloadPath = root_path + "/" + imgToDownload; // full file path
var imageToRemovePath = root_path + "/" + imgToRemove; // full file path
try{
var fileTransfer = new FileTransfer();
fileTransfer.download(url, imageToDownloadPath,
function () {
if(imgToRemove != "" && imgToRemove != null){
var entry = new FileEntry("foo", imageToRemovePath);
entry.remove(function (){alert("fine");flag_delete = true;}, function (){alert("marron");flag_delete = true;});
}
else{
flag_delete = true;
}
flag = "done";
},
function (error) {
flag = "done";
flag_delete = true;
}
);
}catch(error){
alert("Error capturado: "+error.message);
}
while(flag=="working" && !flag_delete){
try{
setTimeout(
function() {
/* Código */
},
300
);
}
catch(error){
alert("Error en el bucle: " + error.message);
}
}
}
我在下载显然似乎是同步冲突的文件时遇到了问题,我的意思是,在下载文件之前看起来有些事情正在执行。
我使用了两个标志,以确保在下载文件之前不要继续(如果需要,将删除旧文件)。这个想法是在动作完成时更改标志的值,并使代码保持循环等待。
此代码给出的结果如下:
似乎永远不会输入成功的fileTransfer.download sucess方法(我使用了一个从未触发过的警报),即使第一个文件正确下载也是如此。
标志永远不会更改,因此代码会一直停留在循环中,并且不会继续下载其他文件。
我认为这可能是一个非常基本的jQuery行为,但我只是从这些技术开始,我有点迷失。如果有人能给我一些线索,我会非常感激。
谢谢!