资讯专栏INFORMATION COLUMN

同步和异步 | 一个问题引发的沉思

Donne / 2911人阅读

摘要:滴滴滴,您收到一条来自好友旁白君的消息旁白君同步和异步,两种接口有啥区别我同步当前方法处理完才可继续后面方法,异步不用等当前方法处理完,可继续执行下一个方法。

滴滴滴,您收到一条来自好友“旁白君”的消息:

旁白君:同步和异步,两种接口有啥区别?
:同步:当前方法处理完才可继续后面方法,异步:不用等当前方法处理完,可继续执行下一个方法。
旁白君:不是很明白,可以举个例子吗?3Q

此时的我楞了下,一时还真不知道怎么回答,于是我抬头陷入了沉思,开始寻找和构思各种例子。(旁白君:好意思说,当时你的回答是:“这个网上很多自己去查一下”)

同步和异步

同步和异步通常用来形容一次方法调用。同步方法调用一旦开始,调用者必须等到方法调用返回后,才能继续后续的方法。异步方法调用一旦开始,方法调用会立即返回,调用者就可以继续后续的方法。而真正的代码逻辑会在另外一个线程中执行,整个过程不会阻碍调用者的工作。

购物例子

下班了,辛苦的一天终于解放,去超市买瓶啤酒舒缓一天的压力,当你选好准备去买单,这时候看到这样的排队场景:

没办法,你只能排队等着,一个一个轮到你后买完单回家,一次愉快的购物就结束了,这就是同步调用

第二天上班,当听到同事说网上购物之后,你也试着在网上购买了一瓶啤酒,当你完成网上支付时,整个购物过程对你来说就结束了,你继续一天的工作。就等着收到快递员给你的签收通知,这就是异步调用

外卖例子

周末了,你突然想吃西餐,找到附近一家西餐厅,去到餐厅时发现太多比你们早去的了,都在排着队等着:

你也只能排队等着,轮到你了买了自己喜欢吃的回家,一个丰盛的晚餐就结束了,这就是同步调用

你觉得这样太浪费时间,学会了网上订餐,上网购买了一个大牛排套餐,当你完成网上支付时,整个购物过程就结束了,你可以继续看韩剧、看书、玩游戏。就等着商家通知美食送上门了,这就是异步调用

:看了以上2个例子,应该明白了吧,其实这样的例子还有很多,例如:“买火车票、代购等”
旁白君:完全明白了,突然发现一个真理
:啥?
旁白君:你看,好像互联网的发展趋势其实是:多线程!
:呃呃呃...你还真能想象,不过好像是那么回事。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/66473.html

相关文章

  • React专题:生命周期

    摘要:而生命周期钩子,就是从生到死过程中的关键节点。异步渲染下的生命周期花了两年时间祭出渲染机制。目前为这几个生命周期钩子提供了别名,分别是将只提供别名,彻底废弃这三个大活宝。生命周期钩子的最佳实践是在这里初始化。 本文是『horseshoe·React专题』系列文章之一,后续会有更多专题推出来我的 GitHub repo 阅读完整的专题文章来我的 个人博客 获得无与伦比的阅读体验 生命周期...

    Hanks10100 评论0 收藏0
  • 由script标签引发了我对setTimeout异步思考

    摘要:我们都知道在中是异步执行机制的像这样如果在这条语句后面还有很多的同步任务,它必须要等这些同步任务完成才会执行里面的内容不好意思,我要等循环的同步任务完成才能执行这里的任务完成了,才会执行的内容那么我所发现的这个问题如下如代码所示在中插入两个 我们都知道在JS中setTimeout是异步执行机制的 像setTimeout(function(){},0)这样 如果在这条语句后面还有很多的同...

    eternalshallow 评论0 收藏0
  • 一道面试题引发思考 --- Event Loop

    摘要:想必面试题刷的多的同学对下面这道题目不陌生,能够立即回答出输出个,可是你真的懂为什么吗为什么是输出为什么是输出个这两个问题在我脑边萦绕。同步任务都好理解,一个执行完执行下一个。本文只是我对这道面试题的一点思考,有误的地方望批评指正。 想必面试题刷的多的同学对下面这道题目不陌生,能够立即回答出输出10个10,可是你真的懂为什么吗?为什么是输出10?为什么是输出10个10?这两个问题在我脑...

    betacat 评论0 收藏0
  • Vue 双向数据绑定原理分析

    摘要:关于双向数据绑定当我们在前端开发中采用的模式时,,指的是模型,也就是数据,,指的是视图,也就是页面展现的部分。参考沉思录一数据绑定双向数据绑定实现数据与视图的绑定与同步,最终体现在对数据的读写处理过程中,也就是定义的数据函数中。 关于双向数据绑定 当我们在前端开发中采用MV*的模式时,M - model,指的是模型,也就是数据,V - view,指的是视图,也就是页面展现的部分。通常,...

    nanfeiyan 评论0 收藏0
  • 一道setTimeout async promise执行顺序笔试题引发思考

    摘要:如果你要问他和谁当进去的快,要从下面两个方面考虑结束时。至于什么,查了很多的资料,了解到一个浏览器环境只能有一个事件循环,而一个事件循环可以有多个任务队列。 ====据说这是今日头条去年的一道笔试题,主要考察的是setTimeout async promise执行顺序 ~先双手奉上这道题目~ async function async1() { consol...

    soasme 评论0 收藏0

发表评论

0条评论

Donne

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<