JS异步和单线程

一题目:

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。如果和你想得一样,那么恭喜你,你已经明白了异步和同步,但是学无止境,加油吧,少年!!!

 

转载于:https://www.cnblogs.com/zhswater/p/10977186.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值