同步和异步 .md

同步和异步

参考 https://www.cnblogs.com/Yellow-ice/p/10433423.html

1.为什么会有同步和异步?

因为JavaScript的单线程,因此同个时间只能处理同个任务,所有任务都需要排队,前一个任务执行完,才能继续执行下一个任务,但是,如果前一个任务的执行时间很长,比如文件的读取操作或ajax操作,后一个任务就不得不等着,拿ajax来说,当用户向后台获取大量的数据时,不得不等到所有数据都获取完毕才能进行下一步操作,用户只能在那里干等着,严重影响用户体验

2.什么是同步,什么是异步?

同步:同步是指在主线程上排队执行的任务,只有前一个任务执行完毕,才能继续执行下一个任务;

异步:异步任务是指不进入主线程,而进入任务队列的任务,只有任务队列通知主线程,某个异步任务可以执行了,该任务才会进入主线程

3.异步机制

(1)所有同步任务都在主线程上执行,行成一个执行栈

(2)主线程之外,还存在一个任务队列,只要异步任务有了结果,就会在任务队列中放置一个事件

(3)一旦执行栈中的所有同步任务执行完毕,系统就会读取任务队列,看看里面还有哪些事件,那些对应的异步任务,于是结束等待状态,进入执行栈,开始执行

(4)主线程不断的重复上面的第三步

同步和异步的区别是什么

1.会不会阻塞当前程序运行

2.同步阻塞代码运行,异步不阻塞

alert(123);是同步 setTimeout;是异步

什么时候需要异步:

(1)需要等待的时候,等待过程不能卡在这吧

(2)等待过程不像alert一样阻塞程序运行

(3)等待的情况都要异步

使用异步的场景:

(1)定时任务,setTimeout,setInterval

(2)网络请求: ajax请求,动态加载

(3)事件绑定,点击等交互事件

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值