理解同步和异步,过段时间再去想,感觉有点把两者混淆了,重新梳理下
基本概念:
同步:指发送一个请求,需要等待返回,然后才能够发送下一个请求,有个等待过程;
异步:指发送一个请求,不需要等待返回,随时可以再发送下一个请求,即不需要等待。
区别:一个需要等待,一个不需要等待,在部分情况下,我们的项目开发中都会优先选择不需要等待的异步交互方式。
例如:
同步:当程序1调用程序2时,程序1停下不动,直到程序2完成回到程序1来,程序1才继续执行下去。
异步:当程序1调用程序2时,程序1径自继续自己的下一个动作,不受程序2的的影响。
同步就是你叫我去吃饭,我听到了就和你去吃饭;如果没有听到,你就不停的叫,直到我告诉你听到了,才一起去吃饭。
异步就是你叫我,然后自己去吃饭,我得到消息后可能立即走,也可能等到下班才去吃饭。
同步:打电话
异步:发消息
当时公司有个小需求,一个邮件发送的功能,需要前端页面提交邮箱等个人信息,提交成功后,提示用户邮件已经发送,请及时查看邮箱,这个请求我想的是,只是用户信息的提交,没有涉及到发邮件的步骤,提示结果是告诉用户及时查看
而当时后台的处理逻辑是同步处理的,我时常理解为串行(同步),并行(异步),他是在图片附件等压缩后,才给我返回success信息,这个压缩的时间大概10-20秒,而这时用户需要等待这么久,我觉得严重影响了用户体验,后让其修改成了异步处理,我提交信息后发送,如果没有发送成功,按照失败记录再次发送,按照产品的使用场景,可以决定同步或异步的处理逻辑。
特此记录。