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
来源:知乎
著作权归作者所有,转载请联系作者获得授权。
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
来源:知乎
著作权归作者所有,转载请联系作者获得授权。
相关文章推荐
- js中的for循环与异步回调函数执行顺序问题
- 关于js中循环遍历中顺序执行多个嵌套ajax的问题
- 嵌套的for循环执行顺序。可以让内外for循环交替执行。简单解析json数组。求js中两个时间差值。
- 使用定时器判断确保某个标签有值才执行方法, 控制js代码执行先后顺序
- Java_20_循环结构_While循环_Do-while循环(执行顺序:初始化、布尔表达式条件判断、循环体、迭代)
- 【JavaScript】使用定时器实现Js的延期执行或重复执行setTimeout,setInterval
- 动态加载外部.js文件时候,javascript的执行顺序问题
- 动态加载JS文件,完美解决跨域、编码、嵌套、队列、兼容性、执行顺序等相关问题。
- fox,ie 如何保证js执行顺序
- js在html中的加载执行顺序
- Html中JS脚本执行顺序简单举例说明
- js 页面载入时的执行顺序
- JavaScript:全面解析各种浏览器网页中的JS代码的执行顺序
- Java中for循环中执行顺序问题及break, continue用法
- Js setInterval与setTimeout(定时执行与循环执行)的代码(可以传入参数)
- Html中JS脚本执行顺序
- 页面中js执行顺序
- for循环的语句执行顺序
- 《oracle pl/sql programming》 第四章 条件与顺序控制 第五章 迭代与循环
- JavaScript 全面解析各种浏览器网页中的JS 执行顺序