同步和异步的本质区别就在于调用者与被调用者之间结果消息通知机制的不同
。
- 同步:调用者需要一直
主动等待
被调用者的结果。 - 异步:调用者调用被调用者后,调用者不会立刻得到结果,在调用者发起调用后,被调用者通过状态、通知或通过回调函数,让调用者知道结果
所以,同步和异步一个是主动等待结果,一个是被动知道结果。
举一个简单的例子:买奶茶,我们有两种方式拿到我们买的奶茶
- 选择排队等待。这种方式就是同步等待消息通知了,我们需要一直在吧台面前等着我们的奶茶
- 扫码。这种方式,你可以不停地看手机排号是否到你了(状态),也可以在那里玩手机等着服务员喊 88 号,奶茶好了(通知)。
上面提到异步调用可以通过状态、通知或者回调函数来告知调用者。
- 状态:调用者需要每隔一段向被调用者发起一个状态查询请求。这种方式效率较为低下。一般我们在调用支付接口的时候,如果服务方告知支付状态未知,则我们需要每隔一段时间去查询该笔订单的支付状态。虽然效率较为低下,但是靠谱。
- 通知:这种方式,调用者不需要做额外的工作,他只需要等被调用者把结果告诉调用者即可。但是这种方式也有点不是那么靠谱,它到底啥时候调用,如果不调用怎么办呢?这些都是我们需要考虑的问题。
- 回调函数:和通知机制差不多。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)