Javascript 我如何计算上传剩余的时间?
在我的jQuery文件上传器中,我有以下可用变量:Javascript 我如何计算上传剩余的时间?,javascript,jquery,upload,Javascript,Jquery,Upload,在我的jQuery文件上传器中,我有以下可用变量:uploadedBytes、totalBytes和timeStarted 如何使用这些变量计算上传剩余时间?我遇到了一个类似的问题,涉及一个uploadSpeed变量 我可以从这些变量推断上传速度吗?或者,我是否能够仅使用这三个变量来计算剩余时间?假设上载期间上载的字节数发生变化 ->当您知道上载已开始时,请调用此脚本: var timecontroller = setInterval(function(){ timeElapsed =
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的上传速度现在已经一分为二。在这种情况下,剩余的时间是不正确的,因为它仍然会考虑上传第一部分的全速。