计算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