一、同步和异步
同步:按照顺序一步一步的执行,容易造成阻塞,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 async和await
await关键字后面必须接promise对象,有await关键字的地方,必须是一个async异步函数
如何定义一个异步方式?就在函数的前面加上 async
注意:onsubmit不支持异步
三、请求报文和响应报文
一个HTTP请求报文可以由请求行、请求头、空行和请求体
请求行是由三部分组成
1、请求方式
2、请求资源路径
3、HTTP协议版本
一个HTTP响应报文可以由响应行、响应头、空行和响应体
响应报文:状态行 版本1. 0和1.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