JS中的同步和异步

JS是单线程的
同步:指的是等待一件事情完成之后才会去执行下一件事,JS中大部分都是同步编程。循环就是同步的,所以在编码过程中尽量减少循环的使用
异步:规划一件事情,但不是立即去执行,需要等待一定的事件,此时异步编程不会等待他执行,而是先去执行下面的操作,当下面的事情处理完再回过来执行这个事件
JS中异步编程只有四种情况:
1、定时器
2、事件绑定
3、ajax读取数据的时候设置为异步
4、回调函数也是异步编程的

var n = 0;
   window.setTimeout(function () {
       n ++;
       console.log(n);
   }, 0);
   console.log(n);

先输出0,再输出1
因为浏览器对与定时器的等待时间都有一个最小值,若小于这个最小值,就会按照最小值时间等待

   // 0 0 5 7 任务队列中谁先到时间就先执行谁
   var n = 0;
    window.setTimeout(function () {
        n += 2;
        console.log(n);
    }, 100);
    window.setTimeout(function () {
        n += 5;
        console.log(n);
    }, 50);
    console.log(n);
    for (var i = 0; i < 10000000; i++) {}
    console.log(n);

因为绑定事件是异步编程的,先绑定完点击的时候再触发, 解决方法就是闭包

// 选项卡绑定
for (var i = 0; i < oList.length; i++) {
        oList[i].onclick = function () {
            tabChange(i);
        }
    }

你可能感兴趣的:(JS中的同步和异步)