异步和同步、Promise

106 阅读2分钟

一、同步和异步

同步:按照顺序一步一步的执行,容易造成阻塞,js引擎是单线程;(即所有操作做完,才返回给用户结果,用户体验不好)

阻塞:第一个步骤未完成,就不能执行第二个步骤,等待就是阻塞

异步:与同步相反,不用等所有操作做完,就相应用户请求;

二、Promise

回调函数解决异步问题同时也对功能进行拓展,但容易造成回调地狱

Promise是一个类,需要被实例化,在实例的时候需要传递参数,该参数是一个函数

它有三种状态分别是等待、完成、拒绝,三种状态顺序是不可逆的

三种原型方法

promise.then();//里面有两个参数,第一个是取resolve的结果,第二个是取reject的结果

promise.catch();//捕获reject的结果

promise.finally();//只要执行resolve或者reject的结果都会执行finally()

四种静态方法

promise.race();//方法里面需要填数组,且必须是支持promise的方法,并发进行

promise.all();//方法里面需要填数组,谁先完成就取谁的结果

promise.reject();

promise.resolve();

ES7 async await

一个promise的使用繁琐,就采用ES7 asyncawait

await关键字后面必须接promise对象,有await关键字的地方,必须是一个async异步函数

如何定义一个异步方式?就在函数的前面加上 async

注意:onsubmit不支持异步

三、请求报文和响应报文

   一个HTTP请求报文可以由请求行、请求头、空行和请求体
   
   请求行是由三部分组成
   
   1、请求方式
   2、请求资源路径
   3HTTP协议版本

    一个HTTP响应报文可以由响应行、响应头、空行和响应体
    
    响应报文:状态行 版本1. 01.1 短语ok 状态200
            content-length: 1555 返回大小
            Content-Type:响应内容的格式html,css.js, 视频,音频
   协议1.0 每次都要建立三次握手和四次挥手,性能不好
   1.1 就在1.0的基础.上加入Connection:keep-alive
  

如果post设置content-type为application/x-www-form-urlencoded 携带的参数格式,为formData , 为对象{id:xx, name:xxx}; 如果post请求没有设置conent-type 携带的参数格式,为Request paylaod , 为字符串id=xx&name=xxx