循环中setTimeout打印结果(使用闭包)
来源:互联网 发布:java 时间转时间戳 编辑:程序博客网 时间:2024/05/18 16:36
for(var i=1;i<4;i++){ setTimeout(function(){ console.log(i); },1000);}
上面的代码会在1秒之后输出3个4,原因是i为全局变量,会先执行完循环(js是单线程机制,先执行同步代码,最后执行异步代码,setTimeout是异步调用),此时i的值已经为4,之前每次循环放入异步队列中的函数就会依次打印出i的值,即连续打印3次4
问题:如何将上面的改为1秒之后一次输出1,2,3?(一种是es6中的let声明变量i,此处利用闭包实现)
for(var i=1;i<4;i++){ (function(j){ setTimeout(function(){ console.log(j); },1000); })(i);}
上面的代码即可实现1秒后依次打印出1,2,3;此处利用闭包每次将i的值传入进去,里面使用参数j接受传过来的值,然后setTimeout异步调用,进入异步队列,循环代码很快执行完,在1秒后,从异步队列里返回执行后的结果,依次打印出1,2,3.
问题:如何使每隔1秒依次打印一个结果?(设置延迟时间依次增加1秒即可)
for(var i=1;i<4;i++){ (function(j){ setTimeout(function(){ console.log(j); },1000*j); })(i);}
上面代码在延迟执行时间那块加了一个参数j,j的值每次都会增加1,使时间每次扩大比上次大一倍,从而实现了每隔一秒就打印出一个结果
阅读全文
0 0
- 循环中setTimeout打印结果(使用闭包)
- setTimeout使用闭包功能,实现定时打印数值
- 在循环中使用setTImeout
- for循环中setTimeout使用注意
- flex在for循环中使用setTimeout
- 循环中使用闭包
- setTimeout与循环闭包经典面试题详解
- setTimeout中的闭包
- setTimeout闭包问题
- settimeout与闭包
- js延迟打印for循环-闭包
- 前端基础进阶(九):图例详解那道setTimeout与循环闭包的经典面试题
- js中关于setTimeOut()循环的问题
- jquery中使用setTimeout()
- 20130717 js中setTimeout的闭包的应用
- 使用闭包对setTimeout进行简单封装
- 让我理解闭包和’经典setTimeout,for循环的面试题‘的文章
- setTimeout 循环闭包的经典面试题 解法与探究
- 2017.10.1 蚯蚓 思考记录
- JVM (PART VI)垃圾收集算法
- typecho安装后登录失败报错 405 Not Allowed nginx/1.10.2
- kuangbin带你飞:专题一 简单搜索 L
- uri,file,path互相转化
- 循环中setTimeout打印结果(使用闭包)
- 第四周Valid Parentheses
- 机器学习常见算法分类汇总
- NOIP 2014 飞扬的小鸟
- 大四生活02:秋招开始
- 【C#】winform软件UI设计模板
- 树规? bzoj4007 战争调度
- 计算机中位(bite),字节(Byte),字,字长的概念
- bzoj1937 [Shoi2004]Mst 最小生成树(KM)