Js 闭包传参 setInterval 多次
2016-11-16 16:48
239 查看
A friend 问了我一个问题,大概是在一个for循环中启动多个定时器。
代码大概如下,
结果是每两秒钟打印五次,打印的全都一样都是 4=>5
执行结果
不论怎么样都是缺点东西,x相对于5 个setInterval 实例,都是共有变量,缺个每个setInterval自己变量。我也没见过别的用法,想到了函数闭包传参,没见过。Google Stackoverflow
执行结果
Reference
how-to-use-setinterval-function-within-for-loop (stackoverflow)
代码大概如下,
var list = [1, 2, 3, 4, 5]; for (var x in list) { setInterval(function() { // list[x] += 10; console.log(x + "=>" + list[x] + "\n"); }, 2 * 1000); }
结果是每两秒钟打印五次,打印的全都一样都是 4=>5
执行结果
不论怎么样都是缺点东西,x相对于5 个setInterval 实例,都是共有变量,缺个每个setInterval自己变量。我也没见过别的用法,想到了函数闭包传参,没见过。Google Stackoverflow
var list = [1, 2, 3, 4, 5]; for (var x in list) { setInterval(function(i) { // list[x] += 10; console.log(x + "=>" + list[i] + "\n"); }, 2 * 1000, x); }
执行结果
Reference
how-to-use-setinterval-function-within-for-loop (stackoverflow)
相关文章推荐
- js setInterval setTimeout 方法区别
- js之setInterval与setTimeout函数传参方法
- JS黑魔法之this, setTimeout/setInterval, arguments
- js setInterval() 用法示例
- JS setInterval setTimeout的用法
- Js_window.setInterval & window.setTimeout
- JS setTimeout() 传参
- 关于js setInterval setTimeout
- Js setInterval与setTimeout(定时执行与循环执行)的代码(可以传入参数
- setTimeout/setInterval 传参的问题
- Js setInterval与setTimeout(定时执行与循环执行)的代码(可以传入参数)
- JS setTimeout setInterval
- js setTimeout and setInterval
- setInterval图片缓冲(js)
- Js setInterval与setTimeout(定时执行与循环执行)的代码(可以传入参数)
- js-定时任务setInterval,setTimeout,clearInterval,clearTimeout
- js setTimeout 和 setInterval
- js中setInterval/clearInterval与setTimeout/clearTimeout
- js setTimeout(function(param),1000)传参问题解决