• vue 中 ajax请求封装以及组件调用方法 ( async/await)


    async/await

      1)async/await场景

          这是一个用同步的思维来解决异步问题的方案,当前端接口调用需要等到接口返回值以后渲染页面时。

      2)名词解释

        >async

          async的用法,它作为一个关键字放到函数前面,用于表示函数是一个异步函数,因为async就是异步的意思, 异步函数也就意味着该函数的执行不会阻塞后面代码的执行,             async 函数返回的是一个promise 对象。

       >await

         await的含义为等待。意思就是代码需要等待await后面的函数运行完并且有了返回结果之后,才继续执行下面的代码。这正是同步的效果

    例子如下:await要放在async中,并且await后面的函数运行后必须返回一个Promise对象才能实现同步的效果。

    1.api/ajax.js

    import axios from 'axios'
    
    export default function ajax(url = '',params = {} ,type = 'GET'){
      let promise;
      return new Promise((resolve ,reject)=>{
      //  判断请求的方式
        if(type == 'GET'){
          let paramsStr = '';
          Object.keys(params).forEach( key=>{
            paramsStr += key+'='+params[key]+'&';
          })
          if(paramsStr != ''){
            paramsStr = paramsStr.substr(0,paramsStr.lastIndexOf('&'));
          }
          url+='?'+paramsStr;
          promise = axios.get(url);
        }else{
          promise = axios.post(url,params)
        }
        promise.then((res)=>{
          resolve(res.data)
        }).catch((err)=>{
          reject(err);
        })
      })
    }
    

    2.api/index.js

    import ajax from './ajax'
    
    const BASE_URL = 'https://localhost:3000/';
    
    //请求方法
    export const getHomeCasual = ()=>ajax(BASE_URL+'Homeapp.do');
    

    3.组件中调用请求方法

       import { getHomeCasual } from './../api/index'
    
       created(){
          this.getHomeData();
        },
        methods:{
          // 请求数据  async/await=>异步转为同步
          async getHomeData (){
              const result = await getHomeCasual();
              console.log(result);
          }
        }

    axios 常规用法

    new Vue({
       el:"#app",
       created(){
          this.ajaxData(); 
       },
       mothods:{
          ajaxData(){
             const result = axios.get('/homeapp.do').then((res)=>{
                                      console.log(res);
                                  })
                                  .catch((err)=>{
                                      console.log(res);
                                  })
          }
       }      
    })    
    

    axios 同步用法

    new Vue({
       el:"#app",
       created(){
          this.ajaxData(); 
       },
       mothods:{
          async ajaxData(){
             const result = await axios.get('/homeapp.do');
             console.log(result);
          }
       }      
    })
    

      

  • 相关阅读:
    常用js脚本
    lotus支持的java版本
    解决传递中文参数乱码问题
    Lotus的金额大小写转换
    lotus designer 8.5中创建JAVA代理
    一步一步带你进入Java世界(一)_Java环境配置
    实例 XPages 开发一个通用的 Dojo Tree 风格定制控件
    LOTUS中B/S开发初学者问题收集
    Lotus问题收集
    R6中文参数乱码解决
  • 原文地址:https://www.cnblogs.com/dyy-dida/p/11110003.html
Copyright © 2020-2023  润新知