setTimeout第三个参数
Posted 哈娄
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了setTimeout第三个参数相关的知识,希望对你有一定的参考价值。
平时都是用setTimeout做一个延时,都是使用两个参数,第一个是个函数,第二个是延时的时间。但是他第三个参数也是很好用的。
场景:
有循环中需要用setTimeout处理的,但是for循环是同步,setTimeout是异步,这样的结果就是输出5次5
for (let i=0;i<4;i++) {
setTimeout(() => {
console.log(i)
}, 1000)
}
闭包解决:
常规的解决办法就是写个闭包来解决这个问题。输出0,1,2,3
for (let i=0;i<4;i++) {
((i) => {
setTimeout(() => {
console.log(i)
}, 1000)
})(i)
}
第三个参数解决:
使用第三个参数解决,写法会很简单。其实第三个参数就是给第一个函数传参数,这样是不是很方便啊。输出0,1,2,3
for (let i=0;i<4;i++) {
setTimeout((i) => {
console.log(i)
}, 1000,i)
}
以上是关于setTimeout第三个参数的主要内容,如果未能解决你的问题,请参考以下文章