一题目:
a:同步和异步的区别?分别举一个同步和异步的例子
b:一个关于setTimeout的笔试题
c:前端使用异步的场景有哪些?
大家可以先想想,能否完全理解。
首先咱们先看一个例子,直接上代码
1 console.log(100) 2 setTimeout(function(){ 3 console.log(200) 4 },1000) 5 console.log(300)
个人理解:如果大家不知道setTimeout的用法。该段代码先打印100,然后等待1秒打印200,最后再打印300。这是人的思维而不是浏览器的思维,这个逻辑显然不对
正确的逻辑是: 打印100,打印300,1秒后打印200
接下来再来看看同步的例子:
1 console.log(100) 2 alert(333) 3 console.log(300)
这里是打印100,浏览器弹出提示333,用户点击确定后,浏览器打印300.这个就是同步的例子,这个逻辑会明显阻塞后面的逻辑。
二何时需要异步
1.在可能发生等待的情况
2.等待过程中不能像alert一样阻塞程序运行
3.因此,所有的“等待的情况”都需要异步
三前端使用异步的场景
1.定时任务:setTimeout,setInverval
2.网络请求:ajax请求,动态img加载
3.事件绑定
1 console.log('start') 2 document.getElementById('kw').addEventListener('click',function(){ 3 console.log('事件点击了') 4 }) 5 console.log('end')
上图是在浏览器下执行的代码。打印了start和end。用户点击的时候,就会打印“事件点击了”
四 同步和异步的区别
1.同步会阻塞代码运行,而异步不会
2.alert是同步,setTimeout是异步
五 一个关于setTimeout的笔试题
1 console.log(1) 2 setTimeout(() => { 3 console.log(2) 4 }, 0) 5 console.log(3) 6 setTimeout(() => { 7 console.log(4) 8 }, 1000) 9 console.log(5)
该程序执行结果为:1 3 5 2 4。如果和你想得一样,那么恭喜你,你已经明白了异步和同步,但是学无止境,加油吧,少年!!!