Javascript延迟

Javascript延迟,javascript,browser,delay,settimeout,setinterval,Javascript,Browser,Delay,Settimeout,Setinterval,我知道Javascript没有延迟(500)方法,该方法会将执行延迟500毫秒,所以我一直试图通过使用setTimeout和setInterval来解决这个问题 for(var i =0; i< 10; i++){ /* Animation Code */ var doNothing = function(){var m =5;} setTimeout(doNothing, 50); } for(变量i=0;i

我知道Javascript没有延迟(500)方法,该方法会将执行延迟500毫秒,所以我一直试图通过使用setTimeout和setInterval来解决这个问题

for(var i =0; i< 10; i++){
    /* Animation Code */
    var doNothing = function(){var m =5;}
    setTimeout(doNothing, 50); 
}
for(变量i=0;i<10;i++){
/*动画代码*/
var doNothing=function(){var m=5;}
设置超时时间(不设置,50);
}

然而,这似乎不起作用。基本上,我想要一些代码,停止执行n毫秒,然后继续执行。

实际上,你不能这样做。处理它并找到一种基于回调的方法。通常这意味着将延迟之后应该发生的所有事情都放在回调本身中

例如,您不能这样做以使
baz
等待:

foo();
setTimeout(function() {
  bar();
}, 500);
baz();
所以你只能做你能做的事情:

foo();
setTimeout(function() {
  bar();
  baz();
}, 500);

实际上,你不能这么做。处理它并找到一种基于回调的方法。通常这意味着将延迟之后应该发生的所有事情都放在回调本身中

例如,您不能这样做以使
baz
等待:

foo();
setTimeout(function() {
  bar();
}, 500);
baz();
所以你只能做你能做的事情:

foo();
setTimeout(function() {
  bar();
  baz();
}, 500);
setInterval()
-以指定的时间间隔反复执行函数

要以字符串形式传递函数,请确保在函数名后面加上括号。 setInterval(“someFunction()”,5000)

传递函数指针时,不要包含括号。 设置间隔(someFunction,5000)

var timer_id=设置间隔(不超过500)

如果你想停止执行 将
计时器\u id
变量设为全局变量

清除间隔(计时器\u id)

setInterval()
-以指定的时间间隔反复执行函数

要以字符串形式传递函数,请确保在函数名后面加上括号。 setInterval(“someFunction()”,5000)

传递函数指针时,不要包含括号。 设置间隔(someFunction,5000)

var timer_id=设置间隔(不超过500)

如果你想停止执行 将
计时器\u id
变量设为全局变量

清除间隔(计时器\u id)

setInterval()方法等待指定的毫秒数,然后执行指定的函数,它将继续执行该函数,每个给定的时间间隔执行一次。
语法

window.setInterval("javascript function",milliseconds);
可以在不使用窗口前缀的情况下编写window.setInterval()方法

setInterval()的第一个参数应该是函数。
如何停止执行?
clearInterval()方法用于停止进一步执行setInterval()方法中指定的函数。

语法

window.clearInterval(intervalVariable)
window.clearInterval()
方法可以在不使用窗口前缀的情况下编写

为了能够使用
clearInterval()
方法,在创建interval方法时必须使用全局变量:

myVar=setInterval("javascript function",milliseconds);
然后,您可以通过调用
clearInterval()
方法来停止执行。

setInterval()方法等待指定的毫秒数,然后执行指定的函数,它将继续执行该函数,每个给定的时间间隔执行一次。
语法

window.setInterval("javascript function",milliseconds);
可以在不使用窗口前缀的情况下编写window.setInterval()方法

setInterval()的第一个参数应该是函数。
如何停止执行?
clearInterval()方法用于停止进一步执行setInterval()方法中指定的函数。

语法

window.clearInterval(intervalVariable)
window.clearInterval()
方法可以在不使用窗口前缀的情况下编写

为了能够使用
clearInterval()
方法,在创建interval方法时必须使用全局变量:

myVar=setInterval("javascript function",milliseconds);
然后,您可以通过调用
clearInterval()
方法来停止执行。

如果您来自语言/框架/API背景,您可以使用类似的东西暂停执行,或者使用类似的东西同步处理用户输入,那么它在JavaScript中不起作用

没有办法用这样的东西阻止JavaScript事件循环,原因很好:UI响应。在JavaScript中,一切都是异步的。您可以使用
setTimeout
在计时器事件发生时执行某些操作,但用户仍然可以在计时器事件之间访问UI,甚至可以从页面中导航

为了处理代码片段,您需要的是一个异步状态机。它允许在停止/继续之间保留代码的状态(在您的情况下,这是动画的状态,尽管
i
变量也是其中的一部分):

(函数()
{
var i=0;
var nextStep=函数()
{

如果(i如果您来自language/framework/API背景,您可以使用类似的东西暂停执行,或者使用类似的东西同步处理用户输入,那么它在JavaScript中无法工作

你不可能用这样的东西来阻止JavaScript事件循环,原因很好:UI响应。在JavaScript中,一切都是异步的。你可以使用
setTimeout
在计时器事件上做一些事情,但用户仍然能够在计时器事件之间访问UI,甚至可以离开页面

为了处理代码片段,您正在寻找的称为异步状态机。它允许在停止/继续之间保留代码的状态(在您的情况下,这是动画的状态,尽管
i
变量也是其中的一部分):

(函数()
{
var i=0;
var nextStep=函数()
{

if(i如果使用RxJS,那么代码将更加清晰可读