2016-09-08 10 views
0

すべてのダウンロードが終了したのに、fileTransfer.downloadの機能の中でcount++が動作していないときは、同期してajaxの作業が必要で、表示はconsole.log('Downloads finalized!');です。どうして?count ++ on Cordova Plugin

マイコード:

function getdata() 
{ 
    var fileTransfer = new FileTransfer(); 
    var path = cordova.file.dataDirectory; 
    jQuery.getJSON(MyJSONData, function(data) { 
     var count = 0; 
     jQuery.each(data, function(key, val) { 
      fileTransfer.download(
       MyFileURL, 
       path+"data/images/"+key+".jpg", 
       function(theFile) { 
        console.log('Saved'); 
        count++; 
       }, null 
      ); 
     }); 
     while(1) 
     { 
      if(count == Object.keys(data).length) 
      { 
       console.log('Downloads finalized!'); 
       break; 
      } 
     } 
    }).fail(function() { 
     console.log('Error'); 
    }); 
} 

答えて

1

私はAjaxの作業を必要とする同期

いいえ、あなたは、コールバック関数を使用する方法を理解する必要があります。

function getdata() { 
 
    var fileTransfer = new FileTransfer(); 
 
    var path = cordova.file.dataDirectory; 
 
    jQuery.getJSON(MyJSONData, function(data) { 
 
    var count = 0; 
 
    jQuery.each(data, function(key, val) { 
 
     fileTransfer.download(
 
     MyFileURL, 
 
     path + "data/images/" + key + ".jpg", 
 
     function(theFile) { 
 
      console.log('Saved'); 
 
      count++; 
 
      if (count == Object.keys(data).length) { 
 
      console.log('Downloads finalized!'); 
 
      } 
 
     }, null 
 
    ); 
 
    }); 
 
    }).fail(function() { 
 
    console.log('Error'); 
 
    }); 
 
}