[英]How can I write a function that takes X amount of seconds?
我想编写一个运行非常接近5秒的javascript函数。 我该如何保证?
我努力了
function wait(numSeconds) {
var end = new Date().getMilliseconds() + numSeconds * 1000;
while (new Date().getMilliseconds() <= end) {}
}
但这只会使页面崩溃。
您不能冻结页面而不冻结页面。
您正在尝试编写一个连续运行5秒的函数。
Javascript在UI线程上运行,因此只要运行任何代码,页面就会被冻结。
简而言之,您无法做到这一点。
您可能需要使用setTimeout()
来编写异步代码 。
您可以使用:
var t = setTimeout(function(){alert('done')},5000);
如果要等待5秒钟再做某事,请使用setTimeout或setInterval 。 否则,仅仅消耗用户时间是一个坏主意。 实际上,如果执行某件事花费的时间太长,浏览器就会中断您的脚本,而您的功能肯定会这样做。
(暂时忽略您为什么不应该真正执行此操作...)
您的代码冻结浏览器的原因是您的while
条件将永远不会变为真( numSeconds
为1或更大)。
.getMilliseconds()
方法 仅返回日期的毫秒部分,即0到999之间的一个数字。对于numSeconds
(大于1),您的end
将始终大于999。
尝试使用.getTime()
而不是.getMilliseconds()
。 或者,如果您不关心支持旧的浏览器,请使用Date.now()
。
您可以只使用javascripts setTimeout代替自己的等待函数。
setTimeout在一定时间后执行功能。
例如:
setTimeout(function(){}, 5000);
只需等待5秒钟。
在w3schools中查看更多内容。
严格来说,您的要求无法完成,因为如您所见,页面将在您等待时冻结。
但实际上,我怀疑您真正想要的是这样的东西:
function waitawhile() {
setTimeout( function() {
alert('5 seconds has passed');
}, 5000);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.