如何创建javascript延迟功能

IT技术 javascript function delay sleep wait
2021-02-18 09:43:37

我有一个 javascript 文件,在几个地方我想添加一个小的延迟,所以脚本会到达那个点,等待 3 秒,然后继续执行其余的代码。我想到的最好的方法是创建一个函数,我可以从脚本的任何地方调用它。

function startDelay(lengthOfDelay)
{
//code to make it delay for lengthOfDelay amount of time
}

但是,我找不到任何方法来实现代码以使其等待。我查看了 setTimeout,但您需要将函数硬编码到其中,这对我不利。

有什么办法可以让脚本暂停几秒钟?代码暂停时 UI 冻结没有问题。

如果没有,有没有办法可以使用 PHP sleep()来实现这一点?(我知道 PHP 是服务器端而 Javascript 是客户端,但也许有一种我没有听说过的方法。)

3个回答

您不需要将匿名函数与setTimeout. 你可以这样做:

setTimeout(doSomething, 3000);

function doSomething() {
   //do whatever you want here
}
我不确定你到底想做什么。您是要暂停页面的执行还是安排将在延迟后执行的函数?
2021-04-23 09:43:37
我将如何创建一个诸如 startDelay(lengthOfDelay) 之类的函数,我可以从脚本中的任何位置调用它,然后让它执行其余的代码,而不仅仅是// 在这里做任何你想做的事
2021-05-05 09:43:37
@Kassem 我认为(她)他的意思是,例如,如果您想使用 for 循环每秒 console.log 一条消息怎么办?while(true){ [a delay function, incorporating console.log]} 我认为您的函数不会按顺序运行。
2021-05-07 09:43:37
第一次不适合我,但以下解决了我的问题: setTimeout(function() { doSomething(); }, 3000);
2021-05-13 09:43:37

没错。欢迎使用异步执行。

基本上,暂停脚本会导致浏览器和页面无响应 3 秒。这对于网络应用程序来说太可怕了,因此不受支持。

相反,您必须考虑“基于事件”。使用 setTimeout 在一定时间后调用函数,该函数将在此期间继续运行页面上的 JavaScript。

幸运的是:sleep.js stackoverflow.com/a/16873849/667927
2021-04-27 09:43:37
有没有办法做到这一点?使页面无响应实际上对我来说是一件好事!
2021-05-11 09:43:37

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

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

替换3000与#毫秒

您可以将要执行的内容放在函数内。

@CBC_NS 我刚刚尝试过,并且每 3 秒重复一次。不过要记住很方便。
2021-04-24 09:43:37
这个答案有点缺乏(我认为),因为 setInterval 将继续每 3 秒运行一次,而不仅仅是一次。
2021-05-02 09:43:37
@AdamDavis 我已经测试过这种方法,我没有遇到任何问题。如果您或其他人对此进行测试并以其他方式进行演示,请让社区知道。谢谢
2021-05-10 09:43:37
这个答案是错误的。原始帖子指出,“我想添加一个小的延迟,这样脚本就会到达那个点,等待 3 秒,然后继续执行其余的代码。” 此代码将每 n 毫秒连续调用声明的函数,直到设置 clearInterval。这可能会产生非常糟糕的意外后果。
2021-05-12 09:43:37
只需用 setTimeout 替换 setInterval 即可按预期工作
2021-05-12 09:43:37