🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
[toc] JS是单线程->JS就是个傻,脑子一根经,做着当前这件事,没有完成之前,绝对不会做下一件事情 JS中的两种编程思想:同步、异步 ## 同步 同步->上一件事情没有完成,继续处理上一件事情,只有上一件事情完成了,才会做下一件事情(JS中大部分都是同步编程的) ``` for(var i=0;i<10000;++i){ if(i==99999){ console.log("循环结束了~~"); } } console.log("ok"); ``` for循环就是同步编程的,只有循环结束后,才会继续执行下面的代码 ### 关于死循环 ``` while(1){} console.log("ok"); //->永远都不会输出的,因为上面的循环是死循环,循环永远都不会结束 ``` ## 异步 规划要做一件事情,但是不是当前立马去执行这件事情,需要等一定的时间,这样的话,我们不会等着它执行,而是继续执行下面的操作,“只有当下面的事情都处理完成了,才会返回头处理之前的事情;如果下面的事情并没有处理完成,**不管之前的事情有没有到时间**,都踏踏实实的给我等着” 在JS中异步编程只有四种情况: - 定时器都是异步编程的 - 所有的事件绑定都是异步编程的 - Ajax读取数据的时候,我们一般都设置为异步编程 - 回调函数也是异步编程的。 ``` var n = 0; window.setTimeout(function(){ n++; console.log(n); //->1 (2) },0); console.log(n); //->0 (1) ``` 每一个浏览器对于定时器的等待时间都有一个最小的值,谷歌:5~6ms,IE:10~13ms,如果设置的等待时间小于这个值,不起作用,还是需要等待到最小时间才执行的,即使设置的时间为0。 ``` ```