自律即自由- 2021-11-26 07:07 采纳率: 100%
浏览 42
已结题

for循环中定时器问题请教下原理

++ 先输出5然后每一秒输出4,3,2,1 等待时间为什么不增加
``javascript

for (var n = 0; n < 5; n++) {
setTimeout(
function (n) {
console.log("n", 5 - n);
},
1000 * n,
n
);
}

```

  • 写回答

2条回答 默认 最新

  • CSDN专家-文盲老顾 2021-11-26 07:24
    关注

    for 循环本身是所在线程运行的,setTimeout 是从新开一个线程,如果你在 for 循环里,开了多个 setTimeout,会几乎同时触发

    for(var i=0;i<5;i++){setTimeout(function(){console.log(new Date())},0)}
    
    

    img

    如果想用定时器触发,那就用 setInterval 方便一些,setTimeout 的话,还要嵌套一个

    
    function 倒计时(i){console.log(i,new Date());if (i>0){setTimeout(function(){倒计时(i-1)},1000)}};倒计时(10);
    

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
    CSDN专家-文盲老顾 2021-11-26 07:27

    楼主如果是想1秒除数5,隔两秒输出4,再隔三秒输出3,需要按照我的第二种方式来写

    回复
查看更多回答(1条)
编辑
预览

报告相同问题?

问题事件

  • 系统已结题 12月30日
  • 已采纳回答 12月23日
  • 创建了问题 11月26日
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部