一开始学习javascript的时候, 我对异步的概念一脸懵逼, 因为当时百度了很多文章,但很多各种文章不负责任的把笼统的描述混杂在一起,让我对这个 JS中的重要概念难以理解, “异步是非阻塞的”, “Ajax执行是异步的”, "异步用来处理耗时操作"....
所有人都再说这个是异步的,那个是异步的,异步会怎么怎样,可我还是不知道:“异步到底是什么?”
后来我发现,其实理解异步最主要的一点,就是记住: 我们的程序是分块执行的。
分成两块, 同步执行的凑一块, 异步执行的凑一块,搞完同步,再搞异步
废话不多说, 直接上图:
我对异步的另外一个难以理解的点是异步/同步和阻塞/非阻塞的关系
人们常说: “异步是非阻塞的” , 但为什么异步是非阻塞的, 或者说, 异步和非阻塞又有什么关系呢
非阻塞是对异步的要求, 异步是在“非阻塞”这一要求下的必然的解决方式
咱们看看一个简单的例子吧
all方法接收一个Promise数组,并且返回一个新的“大Promise”, 只有数组里的全部Promise的状态都转为Fulfilled(成功),这个“大Promise”的状态才会转为Fulfilled(成功), 这时候, then方法里的成功的回调接收的参数也是数组,分别和数组里的子Promise一一对应,
而如果任意一个数组里的子Promise失败了, 这个“大Promise”的状态会转为Rejected, 并且将错误参数传递给then的第二个回调
上面代码中,只要p1、p2、p3之中有一个Promise率先改变状态,p的状态就跟着改变。那个率先改变的 Promise 实例的返回值,就传递给p的回调函数。
曾经我和小伙伴们搞比赛,合并代码都是通过QQ传代码文件然后手动合并,经常会为代码的管理不胜其烦, 遇到诸多问题。一个学长告诉我可以用git,但我当时却觉得:“用QQ传代码合并就很好嘛, 用git的话学起来又麻烦,合并代码辛苦一点也很正常的嘛~~~”,直到有一天我真的用上了git这个可爱的版本控制系统 ——
当初劝我用git的学长的温暖的身影就浮现出来了....额...就像这样:
如果不对新的东西加以学习, 你可能不知道旧的东西会给你带来多少麻烦
如果永远执着于旧的那一套东西, 你可能不知道新的东西能给你带来多少希望和机遇
所以不要总是说:“用原来的就挺好的呀”
京东上的所有商品信息、客户评价、商品咨询、网友讨论等内容,是京东重要的经营资源,未经许可,禁止非法转载使用。
注:本站商品信息均来自于合作方,其真实性、准确性和合法性由信息拥有者(合作方)负责。本站不提供任何保证,并不承担任何法律责任。
印刷版次不同,印刷时间和版次以实物为准。
京东价:京东价为商品的销售价,是您最终决定是否购买商品的依据。
划线价:商品展示的划横线价格为参考价,并非原价,该价格可能是品牌专柜标价、商品吊牌价或由品牌供应商提供的正品零售价(如厂商指导价、建议零售价等)或其他真实有依据的价格;由于地区、时间的差异性和市场行情波动,品牌专柜标价、商品吊牌价等可能会与您购物时展示的不一致,该价格仅供您参考。
折扣:如无特殊说明,折扣指销售商在原价、或划线价(如品牌专柜标价、商品吊牌价、厂商指导价、厂商建议零售价)等某一价格基础上计算出的优惠比例或优惠金额;如有疑问,您可在购买前联系销售商进行咨询。
异常问题:商品促销信息以商品详情页“促销”栏中的信息为准;商品的具体售价以订单结算页价格为准;如您发现活动商品售价或促销信息有异常,建议购买前先联系销售商咨询。
版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。