zoukankan      html  css  js  c++  java
  • 同步和异步详解

    开发过程中,很多地方需要用到同步和异步,在此总结一下

    概念理解

    “同步”就好比:你去外地上学(人生地不熟),突然生活费不够了;此时你决定打电话回家,通知家里转生活费过来,可是当你拨出电话时,对方一直处于待接听状态(即:打不通,联系不上),为了拿到生活费,你就不停的oncall、等待,最终可能不能及时要到生活费,导致你今天要做的事都没有完成,而白白花掉了时间。打不通电话,阻塞了


    “异步”就是:在你打完电话发现没人接听时,猜想:对方可能在忙,暂时无法接听电话,所以你发了一条短信(或者语音留言,亦或是其他的方式)通知对方后便忙其他要紧的事了;这时你就不需要持续不断的拨打电话,还可以做其他事情;待一定时间后,对方看到你的留言便回复响应你,当然对方可能转钱也可能不转钱。但是整个一天下来,你还做了很多事情(非阻塞)。 或者说你找室友临时借了一笔钱,又开始happy的上学时光了。

    阻塞和非阻塞强调的是程序在等待调用结果(消息,返回值)时的状态

    同步和异步强调的是消息通信机制

    鉴于以上,大部分情况,我们需要找家里要钱的时候(请求服务器)用异步,特别着急找同学借钱(页面处理状态)用同步

    举例,以下需求:

    点击处理按钮,请求了接口,用异步;当前状态从“已记录”变成“已处理”,同时文本框变为disabled状态用同步

    延申

    redux中,model中的reducers跟effects是负责修改状态state的方法,其中reducers是同步方法,effects是异步方法

    ES6中,async await 异步写法,简化异步请求,写法类似同步

  • 相关阅读:
    仿微博添加和删除的动画
    到公司实习一个月记
    写一份好简历
    排序算法之快速排序
    PHP和MYSQL中的日期和时间
    我的php经历
    新的征程
    毕业设计笔记
    排序算法之总结
    javascript执行效率小结
  • 原文地址:https://www.cnblogs.com/rong88/p/11751652.html
Copyright © 2011-2022 走看看