start() {
let _this = this;
this.isstart = true;
this.downGameTasks[0] = plus.downloader.createDownload(
'http://download.yxorange.com/dzg/com.legu.king.mgtv.apk',
{ method: 'GET' },
// 下载完成执行的回调函数
(d, status) => {
alert('下载完成');
console.log(d);
console.log(status);
},
);
this.downGameTasks[0].addEventListener('statechanged', (task) => {
if (!this.downGameTasks[0]) { return; }
let progressVal = 0;
// no default
switch (task.state) {
case 1:
console.log('开始下载');
break;
case 2:
console.log('链接到服务器...');
break;
case 3:
progressVal = Math.ceil(task.downloadedSize / task.totalSize* 100) ;
_this.precent = progressVal;
break;
case 4:
cnosole.log('监听下载完成');
break;
}
});
this.downGameTasks[0].start();
下载的时候进度直接从0变到100,但是文件其实并没有下载完成。
有人遇到过没
2 个回复
最小栗子
问题在于这一句: progressVal = Math.ceil(task.downloadedSize / task.totalSize) 100;
Math.ceil()返回大于或等于一个给定数字的最小整数
task.downloadedSize / task.totalSize 永远不可能大于1,Math.ceil(task.downloadedSize / task.totalSize)的结果就永远是1
你要这样写Math.ceil(task.downloadedSize / task.totalSize 100);
撸三发 - 本人唯一QQ:659338841,切勿骚扰;\n博客:https://blog.csdn.net/baidu_21919557
start() {
let _this = this;
this.isstart = true;
this.downGameTasks[0] = plus.downloader.createDownload(
'http://download.yxorange.com/dzg/com.legu.king.mgtv.apk',
{ method: 'GET' },
// 下载完成执行的回调函数
(d, status) => {
alert('下载完成');
console.log(d);
console.log(status);
},
);
this.downGameTasks[0].addEventListener('statechanged', (task) => {
if (!this.downGameTasks[0]) { return; }
// no default
switch (task.state) {
case 1:
console.log('开始下载');
break;
case 2:
console.log('链接到服务器...');
break;
case 3:
let progressVal = 0;//写成局部变量试试
progressVal = Math.ceil(task.downloadedSize / task.totalSize) * 100;
_this.precent = progressVal;
break;
case 4:
cnosole.log('监听下载完成');
break;
}
});
this.downGameTasks[0].start();
菠菜呀 (作者)
谢谢大佬, 搞定了~
2018-04-10 14:01
孟尧
你好 我是用的的你的写法,let progressVal = 0;//写成局部变量试试,还是直接输出的100
2019-07-01 17:13