js for循环中使用定时器

JavaScript032

js for循环中使用定时器,第1张

var items = document.querySelectorAll('#list>li')

for (var i=0 i<items.length i++) {

var item = items[i]

setTimeout(function(){

item.style.backgroundColor = 'red'

},5)

}

js中两种定时器的设置及清除

循环执行:

var timeid = window.setInterval(“方法名或方法”,“延时”)

window.clearInterval(timeid)

<script type="text/javascript">

$(document).ready(function(){    //循环执行,每隔1秒钟执行一次 1000     var

t1=window.setInterval(refreshCount, 1000)

function refreshCount() {

console.log("ready")

}

//去掉定时器的方法

window.clearInterval(t1)

})

</script>

2.定时执行:当方法执行完成定时器停止(但是定时器还在,只不过没用了)

var tmid = window.setTimeout(“方法名或方法”, “延时”)

window.clearTimeout(tmid)

<script type="text/javascript">

$(document).ready(function(){    //定时执行,5秒后执行

var t1=window.setTimeout(refreshCount, 1000 * 5)   function refreshCount() {

console.log("ready")

}    //去掉定时器的方法      window.clearTimeout(t1)

})

</script>

JavaScript中可以实现定时器功能的有两个函数——setTimeout和setInterval,二者的不同是setTimeout只执行一次,而setInterval是以指定的时间间隔重复执行。setTimeout可以使用clearTimeout取消,setInterval可以使用clearInterval取消。

有时,我们会用setTimeout(callback,0)将任务推迟一段很短的时间,但是其实通过process.nextTick(callback)来实现会更好,因为Node中的事件循环在一个处理事件队列的循环里运行,每循环一次称为一个“tick”。使用process.nextTick(callback)回调函数会在事件队列内所有事件处理完毕后,会在下次事件循环之前被调用,即进入下个event loop前执行;而setTimeout(callback,0)把回调延迟到后面的某个event loop执行,具体由设置的延时时间和event loop的执行时间决定。

这样可以保证my_async_function函数是顺序执行。