计算AJAX下载速度
我想在下载文件时实时显示下载速度,但下面的代码不起作用。 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();
为了更好的performance
想到Carlos提供的答案是使用Performance.now()而不是(new Date()),getTime()会是更好的select。
供参考: https : //developer.mozilla.org/en-US/docs/Web/API/Performance/now
- UNMET PEER DEPENDENCY generator-karma @> = 0.9.0
- 浏览器中的WebGL和node.js服务器的节点-WebGL是否可用?
- Javascript导入句柄未定义
- 要更新MongoDB文档中的单个字段,最好的方法是什么? 在feathersjs中更新或修补钩子
- crypto.pbkdf2是asynchronous的,我如何将其视为同步?
- 与数组对象一起使用
- Node.js套接字IO:如何持续保存套接字数据到MongoDB
- AngularJS&Socket.IO – 从Service(发送到此处)到Controller的返回值是undefined || 承诺,asynchronous
- 如何将Exceldate转换为时间戳