for循环中settimemout()失效的解决办法

出现此问题是因为timeout是一种类似于异步的函数,timeout中的函数还未执行时,for循环已经结束了,当指定的1秒过完,timeout中的函数才开始出发,而此时10个settimeout中的函数同时执行,故而同时打印出i,解决方法如下

                  var time=1000
                  for (let i=0;i<10;i++){
                        time+=1000;
                        setTimeout(function () {
                            console.log(i);
                        },time)
                    }
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一. JavaScript是单线程的 为什么呢 ? 首先JavaScript语言的一大特点就是单线程, 通俗点说就...
    酱ka油阅读 547评论 0 5
  • 弄懂js异步 讲异步之前,我们必须掌握一个基础知识-event-loop。 我们知道JavaScript的一大特点...
    DCbryant阅读 2,750评论 0 5
  • 官网 中文版本 好的网站 Content-type: text/htmlBASH Section: User ...
    不排版阅读 4,464评论 0 5
  • 前言 本文我们将会介绍 JS 实现异步的原理,并且了解了在浏览器和 Node 中 Event Loop 其实是不相...
    浪里行舟阅读 1,440评论 2 10
  • 小风轻梳柳青丝,对歌声中笑意浓; 肥鸭拨掌知江暖,不羡蜻蜓不羡蛙; 甜糕香里煮新茶,起盏青瓷绕青烟; 春风得意莫留...
    浅末年代_bbcf阅读 151评论 0 0