setInterval是异步执行的,即:每一次的循环代码相互之间都是独立的,只会在设定的时间到达时立即执行,无论上一次的循环过程是否完成,这样在满足一些使用场景的时候就会带来问题。例如在进行ajax请求的时候,需要根据ajax请求的返回值判断是否继续循环,但是setInterval的每一次循环会直接无视返回值,继续向下执行。
要解决这个问题,需要了解setInterval的传参。 如图所示,传入setInterval中的第一个参数,需要是函数体或者可执行代码串(可以是字符串) 那么上面代码中有什么问题呢。问题就是setInterval中的函数体,不是fun而是fun执行后的返回,也就是undefined,那么现在来看这段代码就很明显了:先执行一次fun(),然后循环执行undefined。
如下, 对于这段代码,本意是先执行一次,然后隔一段时间后再执行一次 this.getData(token,this.replaceChar(fitnames) ||'',this.replaceChar(devices) ||'',this.replaceChar(totalFitNames) ||'');consttimer = setInterval(() => {this.getData(token,this.replaceChar(fitnames) ||'',this.replaceChar(...
log("Interval cleared."); }, 10000); 在这个示例中,myFunction 会立即执行一次,并且之后每 2 秒执行一次。我们还使用 setTimeout 来在10 秒后停止 setInterval 的执行。这样,你就可以确保函数不仅立即执行一次,而且按照指定的时间间隔重复执行,直到你决定停止它为止。
第一次立即执行setInterval函数有一种方法可以配置setInterval方法立即执行该方法,然后使用计时器执行。 3 回答 跃然一笑 TA贡献1826条经验 获得超6个赞 最简单的方法是自己第一次直接调用函数: foo();setInterval(foo, delay); 然而,我们有充分的理由避免setInterval-特别是在某些情况下setInterval事件可以在没有...
2.当setInterval被调用时,它会立即执行指定的函数或代码段一次。 3.然后,setInterval会等待指定的时间间隔。 4.一旦时间间隔结束,setInterval会再次执行函数或代码段。 5.接着,它会继续以指定的时间间隔周期性地执行函数或代码段。 下面是一个使用setInterval的例子,每1秒钟在控制台上打印一次"Hello World!": `...
setTimeout函数在JavaScript中常被用于延迟执行某个任务,也就是说,这个任务会在指定的时间后开始执行。如果你设置的时间超过了指定的毫秒数,那么这个任务将会在超过的时间后立即执行。这种特性使得setTimeout函数非常适合执行单次延迟任务,例如,在用户点击一个按钮后延迟显示一个消息。而setInterval函数与setTimeout...
如果delay为0 ,函数会尽快执行但并非立即执行。setInterval返回一个interval ID ,可用于清除定时器。 清除定时器使用clearInterval(intervalID) ,停止任务循环。比如let id = setInterval(() => console.log('Tick'), 1000); clearInterval(id);可停止打印。若func执行时间超过delay ,会在执行完func后才开始新...
若在setInterval中使用异步代码,如Promise,代码执行不会阻塞新的定时器创建。异步代码会立即执行,完成后将定时器执行完成并加入队列,不影响新的定时器创建。总结setInterval的特性:1. 在特定时间点将代码推入队列,如果已有定时器在队列中,则会跳过。浏览器不会同时创建两个相同的间隔计时器。2. 设置...
setTimeout和setInterval的另一个区别是,setTimeout的执行时间是从上一个任务结束后开始计算的,而setInterval的执行时间是从上一个任务开始后就开始计算的。这意味着,如果一个任务的执行时间超过了设定的时间间隔,那么setTimeout会等待任务完成后再执行下一个任务,而setInterval会立即执行下一个任务,可能导致任务...