我有1个应用程序使用手机缺口2.5.0写的ios。 我尝试将服务器中的文件下载到我的应用程序。我需要下载很多文件(84个文件);我用1个循环来下载所有。
但是当我使用“for”语句时,它的循环速度太快并且几乎同时下载所有文件,并且由于超时,某些文件无法下载完成。
所以我希望1个文件下载完成,然后下一个文件开始下载。
我该怎么做?
请帮帮我!我是自卸车......
这是我的代码:
var fileTransfer = new FileTransfer();
for (var i = 0; i < anhup.length; i++) {
console.log("anhup[" + i + "]: " + anhup[i]);
fileTransfer.download(
"http://smartphone.thnt.vn/VietGames/GhepTranhTu/IOS/update/"
+ anhup[i], window.rootFS.fullPath + "/" + anhup[i],
function(entry) {
sa = entry.fullPath;
console.log("download complete: " + entry.fullPath);
}, function(error) {
console.log("download error source " + error.source);
console.log("download error target " + error.target);
console.log("upload error code" + error.code);
});
}
答案 0 :(得分:1)
尝试
function download() {
var i = 0;
var fileTransfer = new FileTransfer();
function doDownload(i) {
fileTransfer.download(
"http://smartphone.thnt.vn/VietGames/GhepTranhTu/IOS/update/"
+ anhup[i], window.rootFS.fullPath + "/" + anhup[i],
function(entry) {
sa = entry.fullPath;
console.log("download complete: " + entry.fullPath);
if (i < anhup.length - 1) {
doDownload(i + 1);
}
}, function(error) {
console.log("download error source " + error.source);
console.log("download error target " + error.target);
console.log("upload error code" + error.code);
});
}
doDownload(0)
}
答案 1 :(得分:1)
创建一个函数并继续调用自身,直到对象为空,就像这样。
function loadFile() {
// no more to load
if(!anhup.length)
return;
var context = anhup.shift();
fileTransfer.download(url, function(entry) {
console.log("download complete: " + entry.fullPath);
loadFile();
}, function(error) {
// ...
});
}
答案 2 :(得分:0)
你不能用“for”循环来做,你需要在调用'success'回调函数时开始下载下一个文件;最简单的方法是制作'i'全局变量,并像这样重写你的代码(未经过测试!):
var i = 0;
var downloadNext;
var onSuccess = function(entry) {
sa = entry.fullPath;
console.log("download complete: " + entry.fullPath);
i = i + 1;
if (i < anhup.length) {
downloadNext();
}
};
var onFail = function(error) {
console.log("download error source " + error.source);
console.log("download error target " + error.target);
console.log("upload error code" + error.code);
};
downloadNext = function() {
console.log("anhup[" + i + "]: " + anhup[i]);
fileTransfer.download(
"http://smartphone.thnt.vn/VietGames/GhepTranhTu/IOS/update/"
+ anhup[i], window.rootFS.fullPath + "/" + anhup[i],
onSuccess,
onFail
);
};
// start downloading the first one
downloadNext();