文章详情页
javascript - 关于js,alert()阻塞的问题
问题描述
我们知道alert()是阻塞式的,但是一下代码执行顺序有问题
执行顺序有问题
(()=>{ for(let i = 0; i < 5; i++){setTimeout(() => alert(i), 1000); }})()
结果: 0,3,2,1,4
执行顺序没问题
(()=>{ for(let i = 0; i < 5; i++){setTimeout(() => console.log(i), 1000); }})()
结果:0,1,2,3,4
这是为什么呢?
问题解答
回答1:建议看一下setTimeout的运行原理
你如果在alert 0 的时候,不去点确定,等5s(线程空闲情况,有可能需要等10s或者更长时间) 之后再去点击,你发现顺序就正常了
原因是,setTimeout在中代码是,如果进程被占用,等到进程空闲了,就会跳过这次,执行下一次了
回答2:贴一个链接,看完以后你应该茅塞顿开
标签:
JavaScript
相关文章:
1. javascript - 关于json中获取多个key-value对中多层嵌套key的name2. javascript - 关于jsp中嵌入js代码的问题3. javascript - 关于JS的this和构造函数问题4. javascript - 关于js中addEventListener的问题5. javascript - 关于JS 事件委托操作ul li标签的问题6. javascript - 关于js中嵌套的对象的名称是变量的问题7. javascript - 关于json数据的展示问题8. javascript - 关于JS中对象属性描述符和原型的一些问题9. javascript - 关于js原生事件的绑定与解除绑定10. javascript - 关于js高级程序中的问题
排行榜