前端面试-----JavaScript异步和单线程

JavaScript是单线程语言,但是ajax,事件监听是异步的,那么异步是怎么实现的呢(同步会阻塞代码的运行,而异步不会)


同步与异步

前端面试-----JavaScript异步和单线程

执行第一行,打印100

执行setTimeout后,传入setTimeout的函数会被暂存起来,不会立即执行(单线程的特点,不能同时干两件事)由于定时了1秒,这个函数会被封闭起来,在一秒后解封

执行最后一行,打印300

带程序执行完毕之后,会立马看没有储存起来的要执行的

发现暂存起来的setTimeout中的函数时间到了,就立即来过来执行


前端使用异步的场景

1定时任务:setTimeout, setInverval

2.网络请求:ajax请求,动态<img>加载

3.事件绑定

JavaScript执行机制

前端面试-----JavaScript异步和单线程