同步和异步的区别是什么?分别举一个同步和异步的例子
同步会阻塞代码执行,而异步不会
例子:alert是同步,setTimeout是异步
什么是异步
console.log(1);
setTimeout(function(){
console.log(2);
},100);
console.log(3);
什么是同步
console.log(1);
alert(2);
console.log(3);
这里发现,当我不点击alert的确定按钮,3永远都不会输出
何时需要异步
在可能发生等待的情况
等待过程中不能像alert一样会阻塞程序运行
单线程
javascript是一个单线程语音
执行第一行,打印1
执行setTimeout后,传入setTimeout的函数会被暂存起来,
不会立即执行(单线程的特点,不能同时干两件事)
执行最后一行,打印3
待所有程序执行完,处于空闲状态时,会立马看有没有暂存
起来的要执行。
发现暂存起来的setTimeout中的函数无需等待时间,
就立即来过来执行