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);
                }

            }
        }

どうやら同期の競合のように見えるファイルのダウンロードに問題がありました。つまり、ファイルがダウンロードされる前に何かが実行を妨害していたようです。

ファイルがダウンロードされるまで (必要に応じて古いファイルが削除されるまで) 続行しないように、2 つのフラグを使用しました。アイデアは、アクションが完了したときにフラグの値を変更し、コードをループで待機させることです。

このコードが与える結果は次のとおりです。

  • 最初のファイルが適切にダウンロードされても、成功した fileTransfer.download 成功メソッドに入るようには見えません (トリガーされなかったアラートを使用しました)。

  • フラグは決して変更されないため、コードはループに留まり、他のファイルのダウンロードを続行しません。

これは非常に基本的な jQuery の動作かもしれないと思いますが、私はこのテクノロジを使い始めたばかりで、少し迷っています。誰かが私にその手がかりを与えることができれば、私は本当に感謝しています.

ありがとう!!

4

0 に答える 0