Javascript 我如何计算上传剩余的时间?

Javascript 我如何计算上传剩余的时间?,javascript,jquery,upload,Javascript,Jquery,Upload,在我的jQuery文件上传器中,我有以下可用变量:uploadedBytes、totalBytes和timeStarted 如何使用这些变量计算上传剩余时间?我遇到了一个类似的问题,涉及一个uploadSpeed变量 我可以从这些变量推断上传速度吗?或者,我是否能够仅使用这三个变量来计算剩余时间?假设上载期间上载的字节数发生变化 ->当您知道上载已开始时,请调用此脚本: var timecontroller = setInterval(function(){ timeElapsed =

在我的jQuery文件上传器中,我有以下可用变量:
uploadedBytes
totalBytes
timeStarted

如何使用这些变量计算上传剩余时间?我遇到了一个类似的问题,涉及一个
uploadSpeed
变量


我可以从这些变量推断
上传速度吗?或者,我是否能够仅使用这三个变量来计算剩余时间?

假设上载期间上载的字节数发生变化

->当您知道上载已开始时,请调用此脚本:

var timecontroller = setInterval(function(){
    timeElapsed = (new Date()) - timeStarted; // Assuming that timeStarted is a Date Object
    uploadSpeed = uploadedBytes / (timeElapsed/1000); // Upload speed in second

    // `callback` is the function that shows the time to user.
    // The only argument is the number of remaining seconds. 
    callback((totalBytes - uploadedBytes) / uploadSpeed); 
}, 1000)
->文件完全上载后,清除间隔
timecontroller

clearInterval(timecontroller)
请注意,
timeStarted
必须是日期对象

告诉我它是否有效。
多亏了@Stefano Sanfilippo-我使用了他的一些脚本。

假设
uploadedBytes
在上传过程中发生了变化

->当您知道上载已开始时,请调用此脚本:

var timecontroller = setInterval(function(){
    timeElapsed = (new Date()) - timeStarted; // Assuming that timeStarted is a Date Object
    uploadSpeed = uploadedBytes / (timeElapsed/1000); // Upload speed in second

    // `callback` is the function that shows the time to user.
    // The only argument is the number of remaining seconds. 
    callback((totalBytes - uploadedBytes) / uploadSpeed); 
}, 1000)
->文件完全上载后,清除间隔
timecontroller

clearInterval(timecontroller)
请注意,
timeStarted
必须是日期对象

告诉我它是否有效。
多亏了@Stefano Sanfilippo-我用了他的一些剧本。

嗯。。上传所需的时间取决于速度,因此您需要这一点。你不能根据你拥有的变量来计算它。这取决于一个人的网络速度;如果你说一条消息说“基于
2MB
行x分钟”,那么你可以使用平均上传速度给出一个近似值。上传过程中
uploadedBytes
会发生变化?@Frogmouth是的,上传过程中会调用
uploadedBytes
,并相应地进行更新。嗯。。上传所需的时间取决于速度,因此您需要这一点。你不能根据你拥有的变量来计算它。这取决于一个人的网络速度;如果你说一条消息说“基于
2MB
线路的x分钟”@putvande,你可以使用平均上传速度给出一个近似值。
uploadedBytes
在上传过程中会发生变化?@Frogmouth是的,
uploadedBytes
在上传过程中被调用并相应更新。必须重新安排一下,但效果不错。谢谢!你的摇滚伙伴!:)很高兴能帮忙也许您可以添加您的更改…:)如果有人找到这个任务并需要答案,“注意:timeStarted必须是一个数据对象。”是Date对象吗?实例的结果:“new Date()”。看看:这不是最正确的答案。想象一下这个场景:你正在上传1GB的文件,而你上传的第一个500MB文件的速度是最高的。然后以并行方式开始在另一个选项卡中上载。其余500MB的上传速度现在已经一分为二。在这种情况下,剩余的时间是不正确的,因为它仍然会考虑上传第一部分的全速。必须重新安排一点,但它可以工作。谢谢!你的摇滚伙伴!:)很高兴能帮忙也许您可以添加您的更改…:)如果有人找到这个任务并需要答案,“注意:timeStarted必须是一个数据对象。”是Date对象吗?实例的结果:“new Date()”。看看:这不是最正确的答案。想象一下这个场景:你正在上传1GB的文件,而你上传的第一个500MB文件的速度是最高的。然后以并行方式开始在另一个选项卡中上载。其余500MB的上传速度现在已经一分为二。在这种情况下,剩余的时间是不正确的,因为它仍然会考虑上传第一部分的全速。