如何创建javascript延迟功能[重复]
Posted
技术标签:
【中文标题】如何创建javascript延迟功能[重复]【英文标题】:How to create javascript delay function [duplicate] 【发布时间】:2013-05-28 06:07:22 【问题描述】:我有一个 javascript 文件,在几个地方我想添加一个小的延迟,所以脚本会到达那个点,等待 3 秒,然后继续执行其余代码。我想到的最好的方法是创建一个函数,我可以从脚本中的任何位置调用它。
function startDelay(lengthOfDelay)
//code to make it delay for lengthOfDelay amount of time
但是,我找不到任何方法来实现代码以使其等待。我查看了 setTimeout,但您需要将函数硬编码到其中,这对我没有好处。
有什么方法可以让脚本暂停几秒钟?代码暂停时 UI 冻结没有问题。
如果没有,有没有办法可以使用 php sleep() 来实现这一点? (我知道 PHP 是服务器端,Javascript 是客户端,但也许有一种我没有听说过的方法。)
【问题讨论】:
最简单的方法是使用setTimeout 并在您提供给 setTimeout 的函数中执行其余代码。 ***.com/questions/10312963/javascript-settimeout 【参考方案1】:您不需要对setTimeout
使用匿名函数。你可以这样做:
setTimeout(doSomething, 3000);
function doSomething()
//do whatever you want here
【讨论】:
如何创建一个函数,例如 startDelay(lengthOfDelay),我可以从脚本中的 anywhere 调用它,然后让它执行其余的代码,而不仅仅是 //在这里做任何你想做的事? 我不太确定你到底想做什么。你想暂停页面的执行还是安排一个延迟后执行的函数? @Kassem 我认为他的意思是例如如果您想使用 for 循环每秒控制台记录一条消息怎么办?即while(true) [a delay function, incorporating console.log]
我认为您的函数不会按顺序运行。
第一次对我不起作用,但以下解决了我的问题: setTimeout(function() doSomething(); , 3000);【参考方案2】:
啊,是的。欢迎使用异步执行。
基本上,暂停脚本会导致浏览器和页面在 3 秒内无响应。这对于网络应用来说太可怕了,因此不受支持。
相反,您必须考虑“基于事件”。使用 setTimeout 在一定时间后调用一个函数,该函数将在这段时间内继续运行页面上的 JavaScript。
【讨论】:
有什么办法吗?让页面无响应对我来说实际上是一件好事! 幸运的是:sleep.js ***.com/a/16873849/667927【参考方案3】:您可以使用以下示例创建延迟
setInterval(function()alert("Hello"),3000);
将 3000 替换为 # of 毫秒
你可以把你想要执行的内容放在函数里面。
【讨论】:
这个答案有点欠缺(我认为),因为 setInterval 将继续每 3 秒运行一次,而不仅仅是一次。 @AdamDavis 我已经测试过这种方法,我没有遇到任何问题。如果您或其他人对此进行测试并以其他方式进行演示,请让社区知道。谢谢 @CBC_NS 我刚刚试了一下,我也让它每 3 秒重复一次。不过要记住很方便。 这个答案是错误的。原始帖子指出,“我想添加一个小延迟,以便脚本到达那个点,等待 3 秒,然后继续执行其余代码。”此代码将每隔 n 毫秒连续调用声明的函数,直到设置了 clearInterval。这可能会产生非常糟糕的意外后果。 只需将 setInterval 替换为 setTimeout 即可按预期工作以上是关于如何创建javascript延迟功能[重复]的主要内容,如果未能解决你的问题,请参考以下文章
JavaScript / jQuery - 在添加和删除类与下一个函数之间添加延迟[重复]