同步和异步

85 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第9天,点击查看活动详情

  • 同步和异步
    • 显示场景理解
      • 同步:一个人在同一时刻只能做一个事情,在执行一些耗时的操作(不需要看管)不去做别的事,只是等待
      • 异步:在执行一些耗时的操作(不需要看管)去做别的事,而不是等待
  • Ajax中的实现
    • xhr.open()方法第三个参数要求传入的是一个boolean,其作用就是设置此次请求是否采用异步方式执行
    • 默认为true异步,如果需要同步执行需改为false
    • 如果采用同步方式执行,则代码会卡死在xhr.send()这一步,就需要把send方法和最后一步交换一下位置
    • 建议:
      • 为了让这个事件更加可靠(一定触发),在发送请求send()方法之前,一定要先注册readystatechange
      • 不论是同步或异步都能触发成功
      • 了解同步模式即可,切记不要使用同步模式
  • 响应数据格式
    • 疑问
      • 如果希望服务端返回一个复杂数据,该如何处理
      • 关心的问题就是服务端发出合种格式的数据,这种格式如何在客户端用JavaScript解析
    • XML
      • 一种数据描述手段
      • 元数据:用来描述数据的数据
      • 这种数据的缺点
        • 元数据占用的数据量比较大,不利于大量数据的网络传输
        • 在其他语言中,比如JS,解析内部数据时,方法比较复杂
      • 老掉牙的东西,现在的项目基本不使用了
  • JSON
    • JavaScript Object Notation,JavaScript对象表示法
    • 也是一种数据描述手段,类似于JavaScript字面量方式
    • 服务端采用JSON格式返回数据,客户端按照JSON格式解析数据
    • JSON格式数据和JS对象的区别
      • JSON数据不需要存到变量中
      • 结束时不需要写分号
      • JSON数据中的属性名必须加引号
      • 还可以写在字符串中 image.png image.png 使用JSON对象的parse方法可将JSON格式的字符串转换成对象格式,具有了属性和方法,方便在JS中使用 image.png JSON对象的stringify方法,可将对象格式转换为字符串格式 image.png
  • 注意:
    • 不管是JSON也好,还是XML,只是在Ajax请求中用到,并不代表它们与Ajax有必然的联系,它们只是数据协议
    • 不管服务端是采用XML还是采用JSON本质上都是将数据返回给客户端
    • 服务端应该根据响应内容的格式设置一个合理的Content-Type