繁体   English   中英

如何编写一个需要X秒钟的函数?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM