JS的同步与异步

来源:互联网 发布:剑灵辅助软件 编辑:程序博客网 时间:2024/06/16 00:16

JS是单线程的->做着当前的这件事情,没有完成之前,绝对不会做下一件事情
JS中的两种编程思想:同步、异步

同步指下一个程序的执行需要等到上一个程序执行完毕,也就是得出结果后下一个才能执行(JS中大部分都是同步编程的)

     for (var i = 0; i < 100000; i++) {           if (i == 99999) {               console.log("循环结束了~~");      //->(1)           }       }       console.log("ok");      //->(2)    //for循环就是同步编程的,只有循环结束后,才会继续执行下面的代码       while (1) {           }       console.log("ok");     //->永远都不会执行的,因为上面的循环是死循环,循环永远都不会结束

异步指的是上一个程序指向后,下一个程序不用等到上一个程序出结果就能执行,等上一个出结果了调用回调函数处理结果就好。

-> JS是属于单线程,我们最好使用异步编程

-> 定时器都是异步编程

-> 事件绑定 异步

-> 回调函数 异步

-> 在AJAX中可以使用异步编程

异步 -> 规划要做一件事情,但是不是当前立马去执行这件事情,需要等一定的时间,这样的话,我们不会等着它执行,而是继续执行下面的操作,"只有当下面的事情都处理完成了,才会返回头处理之前的事情;如果下面的事情并没有处理完成,不管之前的事情有没有到时间,都踏踏实实的给我等着"

       var n = 0;       window.setTimeout(function () {           n++;           console.log(n);//->1 (2)       }, 1000);       console.log(n);//->0 (1)    //->每一个浏览器对于定时器的等待时间都有一个最小的值,谷歌:5~6ms IE:10~13ms,    //如果设置的等待时间小于这个值,不起作用,还是需要等到最小时间才执行的;尤其是写0也不是立即执行;       var n = 0;       window.setTimeout(function () {           n++;           console.log(n);//->1 (2)       }, 0);       console.log(n);//->0 (1)    //->我们定时器设置的等待时间不一定就是最后执行的时间,如果定时器之后还有其他的事情正在处理中,不管定时器的时间有没有到,都是不会执行定时器的       var n = 0;       window.setTimeout(function () {           n++;           console.log(n);//->不执行的       }, 0);       console.log(n);//->0 (1)       while (1) {//->死循环           n++;       }       console.log(n);//->不执行的       // 例子       var n = 0;       window.setTimeout(function () {           n += 2;           console.log(n); //->7 (4)       }, 20);       window.setTimeout(function () {           n += 5;           console.log(n); //->5 (3)       }, 5);       console.log(n);//->0 (1)       for (var i = 0; i < 10000000; i++) {}       console.log(n);//->0 (2)

原创粉丝点击