setTimeout基本介绍
语法
setTimeout (要执行的代码,等待毫秒数)
举例
setTimeout(()=>(console.log("我一秒钟之后才会打印")),1000)
该示例代码的效果就是在运行一秒钟之后在控制台输出“我一秒钟之后才会打印”
需要注意的是 setTimeout 只会执行一次,如果需要一直循环持续执行可以采用递归法又或者是采用
setInterval
二者语法相同,但是setInterval
会循环执行。
setTimeout的执行机制
在一些循环代码中如果用到setTimeout
则需要仔细考虑延迟代码的执行时机。
let i = 0
for(i = 0; i<6; i++){
setTimeout(()=>{
console.log(i)
},0)
}

以依次打印0,1,2,3,4,5为例
当我们采用上述代码时,由于setTimeout
在for循环之中,当执行代码时,JS引擎会先执行6次循环代码,setTimeout
中的代码并未在此时执行。当for循环执行结束之后,setTimeout
代码就会执行6次,而此时i=6
所以控制台会打印6个6。这与我们的目的是不符的。
正确代码
let i = 0
setTimeout(()=>{
for (i=0;i<6;i++){
console.log(i)
}
},0)

用setTimeout
包含for
循环代码之后就是则是在设定延时之后直接循环打印i