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中的函数,待等待时间过后,解封立即执行