Javascript 之 异步和单线程

异步 指的是程序不是按照代码顺序执行的

  同步会阻塞代码执行,而异步不会,

  alert() 是同步,setTimeout()是异步

 

前端使用异步的场景 需要等待的情况下,因为等待不能阻塞程序执行,所以需要使用异步

定时任务: setTimeout() 、 setInverval() 

网路请求: ajax 请求、动态的 <img /> 加载

事件绑定:如 onload 、 click ... 等

 

 

单线程  指的是一次只能干一件事情,串连关系,异步代码放到后面执行

console.log(100);
setTimeout(function () {
  console.log(200);
}, 1000);
console.log(300);

// 100
// 300
// 200

1、执行第一行,打印100
2、执行setTimeout后,传入setTimeout的函数会被暂存起来,有等待时间,先封闭起来,不会立即执行(单线程的特点,不能同时干两件事)
3、执行最后一行,打印300
4、待所有程序执行完,处于空闲状态时,会立马看有没有暂存起来的要执行
5、发现暂存起来的setTiemout中的函数,待等待时间过后,解封立即执行

 

posted @ 2017-10-15 19:08  Joffy  阅读(112)  评论(0编辑  收藏  举报