zoukankan      html  css  js  c++  java
  • ajax promise

    <script>
    function ajaxPromise(options){
    let {
    type='get',
    url,
    data = {},
    dataType = 'json',
    cache = false // 不缓存
    } = options;
    //data参数处理
    let str = '';
    for(let k in data){
    if(data.hasOwnProperty(k)){
    str += `${k}=${data[k]}&`
    }
    }
    str = str.slice(0,str.length-1);
    //处理 url
    //判断是否是get请求
    let isGet = null;
    if(/get|head|delete/.test(type)){
    isGet = true;
    }else {
    isGet = false;
    }
    if(isGet){ // 是get系列请求
    if(url.indexOf('?') == -1){
    url += `?${str}`;
    }else {
    url = url.replace(/&$/,'');
    url += `&${str}`;
    }
    // cache ? null : url+=`&t=${Math.random()}`;
    cache ? null : url+=`&t=${new Date().getTime()}`;
    }
    return new Promise(function (resolve, reject) {
    //这里边的是做原生ajax;
    let xhr = new XMLHttpRequest();
    xhr.open(type,url);// 默认做成异步
    xhr.onreadystatechange = function () {
    if(xhr.readyState == 4 && /^2d{2}|304/.test(xhr.status)){
    //成功获取数据
    //根据不同数据类型处理数据
    let data = null;
    switch (dataType){
    case 'json':
    data = JSON.parse(xhr.responseText);
    break;
    case 'xml':
    data = xhr.responseXML;
    break;
    default:
    data = xhr.responseText;
    }
    resolve(data);
    }
    if(xhr.readyState == 4 && /^[45]d{2}/.test(xhr.status)){
    //获取失败;
    reject(xhr);
    }
    };
    if(!isGet){
    xhr.setRequestHeader('content-type','application/x-www-form-urlencoded');
    }
    xhr.send(str);
    })
    }


    ajaxPromise({
    url:'./1.json',
    data:{q:1},
    }).then((data)=>{
    console.log(data);
    data.push(1234);
    return data;
    }).then((data)=>{
    console.log(data);
    }).catch(()=>{

    });
    </script>
  • 相关阅读:
    Python爬虫一
    Python爬虫二
    DRF框架中的演变View
    计算时间复杂度例题
    vue2.x webpack打包资源路径问题
    vs code运行c语言 控制台乱码 问题
    解决视频的声音和画面不同步问题
    c语言数据结构,静态链表,结构体数组
    swagger @ApiModel添加实体类不生效
    计算及校验海明码的3个举例
  • 原文地址:https://www.cnblogs.com/xieting123/p/9625271.html
Copyright © 2011-2022 走看看