• VUE-05 axios


    安装

    npm install vue axios bootstrap

    基本用法

     1 <body>
     2 
     3 <div id="app">
     4 </div>
     5 
     6 <script src="./node_modules/vue/dist/vue.js"></script>
     7 <!--基于promise的-->
     8 <script src="node_modules/axios/dist/axios.js"></script>
     9 <script>
    10   let vm = new Vue({
    11     el:"#app",
    12     methods:{},
    13     // 专门用来发送ajax的方法
    14     created(){// 在数据被初始化后会调用,this指向vm实例,可以拿到data中的数据methods中的方法,钩子函数(页面加载后调用)
    15       // promise 解决回调问题
    16       axios.get('./carts.json').then(//function (res) {// success的回调
    17         // 错误this.products=res.data; 回调函数中的this是window
    18       //},function (err) {// error的回调
    19         //console.log(err)
    20       //}
    21       res =>{
    22         this.products=res.data;
    23       },err =>{
    24         console.log(err);
    25       })
    26     },
    27     data:{
    28       products:[]
    29     }
    30   })
    31 </script>
    32 </body>

    1、回调函数

     1 let a ='';
     2 function buy() {
     3   setTimeout(function () {
     4     a="蘑菇";
     5   },2000)
     6 }
     7 
     8 buy();
     9 
    10 function cookie() {
    11   console.log(a);
    12 }
    13 cookie();//并不会取到 蘑菇,异步,因为执行到buy没有执行完就去执行cookie了
     1 let a ='';
     2 function buy(callback) {
     3   setTimeout(function () {
     4     a="蘑菇";
     5     callback(a);
     6   },2000)
     7 }
     8 buy(function cookie(val) {
     9   console.log(val);
    10 });
    11 
    12 // 回调函数,将后续的处理逻辑传入到当前要做的事,事情做好后调用此函数

    2、promise

     解决回调问题,有三个状态:等待、成功、失败

     1 // 自带的
     2 // 等待pending--> resolve 代表转向成功态   reject 代表转向失败态
     3 // resolve和reject均是函数
     4 // promise的实例就一个then方法,两个参数,两个函数
     5 let p = new Promise((resolve, reject)=>{
     6   setTimeout(()=>{
     7     let a = '蘑菇' 8     //resolve(a);
     9     reject(a);
    10   },2000)
    11 
    12 });
    13 
    14 p.then((data)=>{console.log(a)},(err)=>{console.log('err')})
    15 
    16 
    17 
    18 function buyPack() {
    19   return new Promise((resolve, reject)=>{
    20     setTimeout(()=>{
    21       if(Math.random()>0.5){
    22         resolve("买")
    23       }else {
    24         reject("不买")
    25       }
    26     },Math.random()*1000)
    27   })
    28 }
    29 
    30 buyPack().then((data)=>{console.log(data)},(data)=>{console.log(data)});

    3、promise封装ajax

     1 function ajax({url='',type='get',dataType='json'}) {
     2   return new Promise((resolve, reject) =>{
     3     let xhr = new XMLHttpRequest();
     4     xhr.open(type,url,true);
     5     xhr.responseType=dataType;
     6     xhr.onload = function () {// xhr.readyState = 4 且 xhr.status=200
     7       // console.log(xhr.response);
     8       if(xhr.status === 200){
     9         resolve(xhr.response);
    10       }else{
    11         reject('Not Found');
    12       }
    13 
    14     };
    15     xhr.onerror = function(err){// 网络不好的时候会走
    16       reject(err);
    17     };
    18     xhr.send();
    19   })
    20 }
    21 
    22 ajax({url:'./carts.json'}).then(()=>{},()=>{});

    应用:

     1 <!DOCTYPE html>
     2 <html lang="en">
     3 <head>
     4     <meta charset="UTF-8">
     5     <title>封装ajax</title>
     6 </head>
     7 <body>
     8 
     9 <div id="app" v-cloak>
    10 </div>
    11 
    12 <script src="./node_modules/vue/dist/vue.js"></script>
    13 <script src="./11promise-ajax.js"></script>
    14 <script>
    15   let vm = new Vue({
    16       el:"#app",
    17       methods:{},
    18       // 专门用来发送ajax的方法
    19       created(){
    20         ajax({url:"./carts.json"}).then((res)=>{
    21           console.log(res);
    22         },(err)=>{
    23 
    24         })
    25       },
    26       data:{
    27         products:[]
    28       }
    29   })
    30 </script>
    31 </body>
    32 </html>
  • 相关阅读:
    对计算机科学与技术专业的认识及未来的规划
    秋季学期学习总结
    自我介绍
    Leetcode每日一题 83. 删除排序链表中的重复元素
    Leetcode每日一题 82. 删除排序链表中的重复元素 II
    Leetcode每日一题 456.132 模式
    Leetcode每日一题 341. 扁平化嵌套列表迭代器
    Leetcode每日一题 191. 位1的个数
    Leetcode每日一题 73. 矩阵置零
    Leetcode每日一题 150. 逆波兰表达式求值
  • 原文地址:https://www.cnblogs.com/onroad2019/p/13277682.html
Copyright © 2020-2023  润新知