您的位置:首页 > Web前端 > JavaScript

js 循环迭代定时器的执行次数和执行顺序??主要是因为js是单线程

2016-12-10 10:54 846 查看
当定时器运行时即使每个迭代中执行的是setTimeout(.., 0),所有的回调函数依然是在循环结束后才会被执行

for语句开始
赋值i=1;
settimeout语句1000毫秒后把timer函数加入进程队列;(这里的i具体值是几,要等被调用的时候才知道);
赋值i=2;
settimeout语句1000毫秒后把timer函数加入进程队列;
赋值i=3;
settimeout语句1000毫秒后把timer函数加入进程队列;
赋值i=4;
settimeout语句1000毫秒后把timer函数加入进程队列;
赋值i=5;
settimeout语句1000毫秒后把timer函数加入进程队列;
赋值i=6;
i<=5不满足,退出循环
for语句一下子就运行完了,

…… 1000毫秒后,
上面定时器里的任务一个个加入进程队列,
现在进程如果是空闲的,页面里没有其他代码在运行,
开始执行第一个timer函数,这时候i已经是6了;后面几次调用也都是6

引用
链接:https://www.zhihu.com/question/50884986/answer/123146568
来源:知乎
著作权归作者所有,转载请联系作者获得授权。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: