我有以下代码:
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);
}
}
}
我在下载文件时遇到了问题,这显然是一个同步冲突,我的意思是,在下载文件/s 之前似乎有什么东西正在阻止执行。
我使用了两个标志来确保在文件下载之前不会继续(如果需要,旧的会被删除)。这个想法是在动作完成时更改标志的值并保持代码在循环中等待。
这段代码给出的结果如下:
即使第一个文件正确下载,它似乎也永远不会进入成功的 fileTransfer.download 成功方法(我使用了从未触发的警报)。
标志永远不会更改,因此代码会停留在循环中,并且不会继续下载其他文件。
我认为这可能是一个非常基本的 jQuery 行为,但我只是从这项技术开始,我有点迷茫。如果有人能给我一个线索,我将不胜感激。
谢谢!!