1

我有以下代码:

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 行为,但我只是从这项技术开始,我有点迷茫。如果有人能给我一个线索,我将不胜感激。

谢谢!!

4

0 回答 0