我想在下载文件时实时显示下载速度,但是下面的代码不起作用。 Speed
为整个下载返回 0.0。
https.get(options, function (update) {
fileSize = (parseInt(update.headers['content-length']) / 1048576).toFixed(1);
startTime = (new Date()).getTime();
endTime = startTime;
update.on('data', function (chunk) {
file.write(chunk);
len += chunk.length;
fileDownloaded = (len / 1048576).toFixed(1);
endTime = (new Date()).getTime();
time = (endTime - startTime) / 1000;
speed = ((fileSize / time) / (1024 * 1024)).toFixed(2);
progressPercentage.html(fileDownloaded + ' MB / ' + fileSize + ' MB ' + speed + ' MB/s');
});
});
最佳答案
我认为可能有更好的解决方案,但我们开始吧:
var startTime = (new Date()).getTime();
var downloadedLength = 0;
update.on('data', function (chunk) {
// ...
downloadedLength += chunk.length;
var now = (new Date()).getTime();
var speed = downloadedLength / (now - startTime); //bytes/second
//speed / 1024 should return in kilobytes
//...
});
编辑:
考虑使用 Date.now()
而不是 (new Date()).getTime();
以获得更好的性能
关于javascript - 计算 AJAX 下载速度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37865622/