次のコードがあります。
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 の動作かもしれないと思いますが、私はこのテクノロジを使い始めたばかりで、少し迷っています。誰かが私にその手がかりを与えることができれば、私は本当に感謝しています.
ありがとう!!