JS 异步JS http请求

异步JavaScript

1 控制我们如何执行需要一些时间才能完成的任务 比如:从数据库请求数据

同步javaScript 某个任务时间过长阻塞任务的执行

javaScript 一次 可以运行一条语句 单线程模式 同时只能执行一个任务 其他在后面等待

后一个任务只能等待前一个任务完成才能执行

异步任务 独立于线程以外的操作 将耗费时间的操作交给callback 推迟时间来执行不会阻塞后续任务

模拟异步代码

console.log('1');
console.log('2');
setTimeout(
  () => {
    console.log('两秒后执行')
  }, 2000
);
console.log('3');
console.log('4');

http请求 

//创建 http请求
   //0 - (未初始化)还没有调用send()方法
 //1 - (载入)已调用send()方法,正在发送请求
 //2 - (载入完成)send()方法执行完成,已经接收到全部响应内容
 //3 - (交互)正在解析响应内容
 ///4 - (完成)响应内容解析完成,可以在客户端调用了

const getTodos = (callback) => {
  const request = new XMLHttpRequest();

  request.addEventListener('readystatechange', () => {
    // console.log(request, request.readyState);
    if (request.readyState === 4 && request.status === 200) {
    const data=JSON.parse(request.responseText);
      callback(undefined, data);
    } else if (request.readyState === 4) {
      // console.log('无法获取数据');
      callback('无法获取数据', undefined);
    }
  });

  request.open('GET', 'http://jsonplaceholder.typicode.com/todos');
  request.send();
};

console.log('1');
console.log('2');
getTodos((err, data) => {
  console.log('触发回调函数');
  // console.log(err, data);
  if (err) {
    console.log(err);
  } else {
    console.log(data);
  }
});
console.log('3');
console.log('4');

json格式

[
    { "name": "summer", "score": 50, "isLogin": true },
    { "name": "lucy", "score": 40, "isLogin": false },
    { "name": "henry", "score": 50, "isLogin": true },
    { "name": "tom", "score": 20, "isLogin": false },
    { "name": "lily", "score": 60, "isLogin": true }
  ]
  

JSON书写格式

//JSON.parse() 方法将数据转换为 JavaScript 对象。
// JSON.stringify() 方法将 JavaScript 对象转换为字符串。

let arr = [ "Google", "Runoob", "Taobao", "Facebook" ];
let myJSON = JSON.stringify(arr);
console.log(myJSON)
console.log(typeof myJSON) //string
console.log(typeof arr) //object  

let myObj = { "name":"runoob", "alexa":10000, "site":[ "Google", "Runoob", "Taobao" ] };
let myobjJSON=JSON.stringify(myObj);

console.log(typeof myObj,typeof myobjJSON)
console.log(JSON.parse(myobjJSON))

​
100  继续   请求者应当继续提出请求。服务器已收到请求的一部分,正在等待其余部分

101  切换协议   请求者已要求服务器切换协议,服务器已确认并准备切换

200   成功   服务器已成功处理了请求

201  已创建   请求成功并且服务器创建了新的资源

202   已接受  服务器已接受请求,但尚未处理

203  非授权信息  服务器已成功处理了请求,但返回的信息可能来自另一个源

204  无内容  服务器成功处理了请求,但没有返回任何内容

205  重置内容  服务器成功处理了请求,内容被重置

206  部分内容  服务器成功处理了部分请求

300  多种选择   针对请求,服务器可执行多种操作

301  永久移动  请求的网页已永久移动到新位置,即永久重定向

302  临时移动  请求的网页暂时跳转到其他页面,即暂时重定向

303 查看其他位置  如果原来的请求是POST,重定向目标文档应该通过GET提取

304  未修改  此次请求返回的网页未修改,继续使用上次的资源

305  使用代理  请求者应该使用代理访问该网页

307  临时重定向  请求的资源临时从其他位置响应

400  错误请求  服务器无法解析该请求

401  未授权  请求没有进行身份验证或验证未通过

403  禁止访问  服务器拒绝此请求

404  未找到  服务器找不到请求的网页

405  方法禁用  服务器禁用了请求中指定的方法

406  不接受  无法使用请求的内容响应请求的网页

407  需要代理授权  请求者需要使用代理授权

408  请求超时  服务器请求超时

409  冲突  服务器在完成请求时发生冲突

410  已删除  请求的资源已永久删除

411  需要有效长度  服务器不接受不含有效内容长度标头字段的请求

412  未满足前提条件  服务器未满足请求者在请求中设置的其中一个前提条件

413  请求实体过大  请求实体过大,超出服务器的处理能力

414 请求URI过长  请求网址过长,服务器无法处理

415  不支持类型  请求格式不被请求页面支持

416  请求范围不符  页面无法提供请求的范围

417   未满足期望值  服务器未满足期望请求标头字段的要求

500  服务器内部错误  服务器遇到错误,无法完成请求

501 未实现  服务器不具备完成请求的功能

502  错误网关  服务器作为网关或代理,从上游服务器收到无效响应

503  服务不可用 服务器目前无法使用

504  网关超时  服务器作为网关或代理,但是没有及时从上游服务器收到请求

505  HTTP版本不支持  服务器不支持请求中所用的HTTP协议版

​

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值