• axios 应用进一步封装


    axios 应用中进一步封装

    /*
    能发送异步ajax请求的函数模块
    封装axios库
    函数的返回值是promise对象
    1. 优化1: 统一处理请求异常?
        在外层包一个自己创建的promise对象
        在请求出错时, 不reject(error), 而是显示错误提示
    2. 优化2: 异步得到不是reponse, 而是response.data
       在请求成功resolve时: resolve(response.data)
     */
    
    import axios from 'axios'
    
    export default function ajax (url, data = {}, type = 'GET') {
      return new Promise((resolve, reject) => {
        let promise
        // 1. 执行异步ajax请求
        if (type === 'GET') { // 发GET请求
          promise = axios.get(url, { // 配置对象
            params: data // 指定请求参数
          })
        } else { // 发POST请求
          promise = axios.post(url, data)
        }
        // 2. 如果成功了, 调用resolve(value)
        promise.then(response => {
          resolve(response.data)
          // 3. 如果失败了, 不调用reject(reason), 而是提示异常信息
        }).catch(error => {
          // reject(error)
          alert('请求出错了: ' + error.message)
        })
      })
    }
    /*
    ajax 请求函数模块
    */
    import axios from 'axios'
    /**
     * 向外部暴漏一个函数 ajax
     * @param {*} url 请求路径,默认为空
     * @param {*} data 请求参数,默认为空对象
     * @param {*} type 请求方法,默认为GET
     */
    export default function ajax (url = '', data = {}, type = 'GET') {
      // 返回值 Promise对象 (异步返回的数据是response.data,而不是response)
      return new Promise(function (resolve, reject) {
        // (利用axios)异步执行ajax请求
        let promise // 这个内部的promise用来保存axios的返回值(promise对象)
        if (type === 'GET') {
          // 准备 url query 参数数据
          let dataStr = '' // 数据拼接字符串,将data连接到url
          Object.keys(data).forEach(key => {
            dataStr += key + '=' + data[key] + '&'
          })
          if (dataStr !== '') {
            dataStr = dataStr.substring(0, dataStr.lastIndexOf('&'))
            url = url + '?' + dataStr
          }
          // 发送 get 请求
          promise = axios.get(url)
        } else {
          // 发送 post 请求
          promise = axios.post(url, data)
        }
        promise.then(response => {
          // 成功回调resolve()
          resolve(response.data)
        })
          .catch(error => {
            // 失败回调reject()
            reject(error)
          })
      })
    }

  • 相关阅读:
    Oracle左连接、右连接、全外连接以及(+)号用法
    linux中游戏好玩
    python之allure报告
    UI自动化之元素定位(xpath、css)
    expected_conditions模块提供了判断页面元素的16种方法
    安全测试1_Web知识简介
    零基础学习python_easygui(35课)
    jmeter通过if控制器控制业务比例
    系统异常设计
    kafka 消息队列
  • 原文地址:https://www.cnblogs.com/zzxuan/p/9377829.html
Copyright © 2020-2023  润新知