2016-09-08 145 views
0

我需要ajax同步工作,并且只有在所有下载完成时才显示console.log('Downloads finalized!');,但count++fileTransfer.download函数中不起作用。为什么?科尔多瓦插件计数++

我的代码:

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