js为什么是单线程语言,什么是异步

1.首先咱们来搞清楚js为什么是单线程

异步还得从js语言特性开始,因为js是单线程语言,那么可能就迷糊了,为啥js是单线程语言啊?

答案:因为js主要是做用户交互效果的,对浏览器的一些元素就行操作。我们假设js是多线程的,我这里有两个线程,一个要对id="div"的div元素进行删除操作,我同时还有一个线程要对这个div进行插入操作,我想在里面插入一个a元素,你想想浏览器它不就崩溃了,我到底听谁的?

现在我们想一下单线程的情况,我只有一个线程,同时只能顺序的执行一个操作,我先把div删除了,我后面想给这个div加元素,就失败了,因为div没了,也就不会冲突。

**

2.啥是异步啊
js是单线程,顺序执行的,比如我有100行代码,我在第50行给服务器发了个请求,“服务器给我数据,我要数据”。服务老了耳背,“啥!?马什么梅?”。过了十万八千年才给你回应。这时候你后面一半的代码还要等老年服务器反映过来才执行。这就是单线程的毛病了

为了解决问题这时候就有了异步操作,我在50行给老年服务器发了请求,我不管服务器的处理时间,我把这个任务丢到任务队列里去,服务器自己玩,好了叫我。然后这个时候就执行51行以后的代码,这就叫异步。等我执行到75行,服务器说我找到马冬梅了,这时候我们就重新执行,执行栈中的这个请求的后续步骤。

**

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

编程菜鸟☞

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值