同步与异步的区别(一看则懂)

前端面试经常被问——同步与异步的区别是什么?答案呢,大家都知道,只是在于你怎么表达

这种问题也不是很复杂,建议在回答的时候最好结合自己的实际项目开发以及自己的理解来回答,这样的效果会比较好,面试上提的问题本来目的就是想考察你是否熟悉,是否有用到过,如果你是结合你的项目来回答问题的,很显然向面试官传递了一个信息就是你是有开发经验的。

概况:同步是阻塞模式,异步是非阻塞模式

同步的理解:

同步就是指一个进程在执行某个请求的时候,若该请求需要一段时间才能返回信息,那么这个进程将会一直等待下去,直到收到返回信息才继续执行下去;

同步就相当于是 当客户端发送请求给服务端,在等待服务端响应的请求时,客户端不做其他的事情。当服务端做完了才返回到客户端。这样的话客户端需要一直等待。用户使用起来会有不友好。

举个我在项目中用到同步的例子

详情页渲染需要掉接口来完成客户和部门两个字段的渲染,新建页面的逻辑是必须先选择客户,拿到客户的id再去请求部门的接口,所以我调详情页接口的时候一开始没考虑到这个问题直接渲染,结果就是出错,因为代码从上到下执行,是异步请求,我的客户还没请求成功的同时,部门也已经请求完了,解决方法,我就是接口套接口,把请求部门的接口写在客户接口的里面,形成同步请求,先请求完成之后再去调部门接口!

异步的理解:

异步是指进程不需要一直等下去,而是继续执行下面的操作,不管其他进程的状态。当有消息返回时系统会通知进程进行处理,这样可以提高执行的效率。
异步就相当于当客户端发送给服务端请求时,在等待服务端响应的时候,客户端可以做其他的事情,这样节约了时间,提高了效率。

存在就有其道理 异步虽然好 但是有些问题是要用同步用来解决,比如有些东西我们需要的是拿到返回的数据在进行操作的。这些是异步所无法解决的。

ps:加深你的理解小例子:

  • 比方说一个人边吃饭,边看手机,边说话,就是异步处理的方式。

  • 同步处理就不一样了,说话后在吃饭,吃完饭后在看手机,必须等待上一件事完了,才执行后面的事情。

  • 而在前端开发中常见的异步一般常见的包括:setTimeout,setInterval,ajax

  • setTimeout是定时延时运行函数,只执行一次

  • setInterval也是定时延时函数,但是这个函数本身可以一直执行,不会停止,除非把它清除。

  • ajax是前端常用的和后台进行异步交互数据的请求方式,其实它本身也包括同步和异步,同步的就是由代码从上到下顺序执行,而异步的ajax是我们发送请求到服务器之后,只需要在监听服务器的响应即可,不用等到请求结束在执行其他的代码,这就是异步ajax

猜你喜欢

转载自blog.csdn.net/hong521520/article/details/106671930