1、同步和异步的区别是什么
- 同步会阻塞代码执行,而异步不会
- alert是同步,setTimeout是异步
2、前端使用异步的场景有哪些
- 定时任务:setTimeout,setInterval
- 网络请求:Ajax请求,动态
<img>
加载 - 时间绑定
例如,定时任务:
console.log(100)
setTimeout(function(){
console.log(200)
})
console.log(300)
- 执行第一行,打印100;
- 执行setTimeout后,传入setTimeout的函数会被暂存起来,不会立即执行(单线程的特点,不能同时干两件事)
- 执行最后一行,打印300
- 待所有程序执行完,处于空闲状态时,会立马看有没有暂存起来的要执行
- 发现暂存起来的setTimeout中的函数无需等待时间,就立即执行