如何创建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 onkeyup延迟函数调用[重复]

JavaScript / jQuery - 在添加和删除类与下一个函数之间添加延迟[重复]

用于关系可视化的javascript框架[重复]

异步 JavaScript - 回调与延迟/承诺 [重复]

Javascript:如何在执行 javascript 代码之间设置一个简单的延迟?

如何在JavaScript中使用async / await延迟数组回调?