【问题标题】:How to create javascript delay function [duplicate]如何创建javascript延迟功能[重复]
【发布时间】: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 是客户端,但也许有一种我没有听说过的方法。)

【问题讨论】:

标签: javascript function delay sleep wait


【解决方案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。

【讨论】:

【解决方案3】:

您可以使用以下示例创建延迟

setInterval(function(){alert("Hello")},3000);

3000 替换为 # of 毫秒

你可以把你想要执行的内容放在函数里面。

【讨论】:

  • 这个答案有点欠缺(我认为),因为 setInterval 将继续每 3 秒运行一次,而不仅仅是一次。
  • @AdamDavis 我已经测试过这种方法,我没有遇到任何问题。如果您或其他人对此进行测试并以其他方式进行演示,请让社区知道。谢谢
  • @CBC_NS 我刚刚试了一下,我也让它每 3 秒重复一次。不过要记住很方便。
  • 这个答案是错误的。原始帖子指出,“我想添加一个小延迟,以便脚本到达那个点,等待 3 秒,然后继续执行其余代码。”此代码将每隔 n 毫秒连续调用声明的函数,直到设置了 clearInterval。这可能会产生非常糟糕的意外后果。
  • 只需将 setInterval 替换为 setTimeout 即可按预期工作
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-07-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多