Skip to content

2.同步、异步

前言

异步/同步,是处理模式的一种机制,一般用于函数、接口或者业务处理。

同步模式

假设有a函数和b函数, a函数需要调用b函数。 在a调用b函数后,但是b函数还没有返回结果之前,a函数必须一直在等待,必须等b处理完结果后,a才会继续往下执行。

举个例子:a去银行营业厅办事,等轮到a去窗口了,a说我要办某某业务,然后里面的营业员就开始办理,然后a要一直在窗口等着,直到里面营业员办完,才可以离开。

a在窗口等待,走不了,这种模式就叫同步模式,这种状态,被称为被阻塞,因为a的行动被阻在这个节点了。

异步模式

假设有a函数和b函数, a函数需要调用b函数。 在a调用b函数后,不需要等待b函数返回结果,就会继续执行。

举个例子:a去饭店吃饭,点了餐之后,可以随便溜达,等饭店做好之后,会进行叫号。a听到叫号后,去取餐,然后进餐。 在等待的时候,a可以随便溜达随意干什么(我们不讨论a出饭店之后溜走的事,只是说这个状态)。

这种模式就叫异步模式,a不专门等待的状态,被称为非阻塞式。

叫号,属于回调函数(回调地址), 是a给b留下,b处理完后通知a的方式。

应用场景

同步/异步模式可以用在函数、服务、以及业务之间。

产品经理在设计业务时,也可以参考同步、异步的这种机制。

耦合性比较强、业务数据时间短的业务,一般使用同步模式,例如注册用户、新增用户等。 例如注册用户,你不能没等注册就进入登录或者首页,因为没有注册完,用户进入对应页面也无法进行登录或者使用。

耦合性没那么强,业务处理时间比较长的业务,则推荐使用异步模式,例如批量导入用户,上传文件等。

例如批量导入用户,一般的处理流程是,第一步先将文件上传到服务器,第二步调用创建用户功能进行创建。 如果我们用同步模式,则用户等待的时间则为上传文件的加上+ 创建用户的时间。 后者的时间一般来说会比较长。这就需要用户一直在页面上等待,不但用户体验不好,而且还容易操作页面超时,让用户以为操作失败,从而重复操作。

这时候就可以使用异步模式,在上传完成后,就告诉用户已经完成了了文件上传可以关闭网页,后面创建用户转入后台,等创建之后会通知用户创建的结果即可。

其他同类词-同步服务

这里的同步其实是对服务的一个修辞,说明这个服务是用于数据同步的。类似的还可以有消息服务、订单服务等,跟上面的机制模式没有关系。