vuex异步请求,vue调用异步方法

  vuex异步请求,vue调用异步方法

  前端数据都是通过接口请求获取的,而Vue本身不支持ajax请求,那么Vue中的异步请求如何解决?这里有一些方法可以帮助你。

  

目录

  如何进行异步请求1。axios实现异步请求2。vue-resource实现异步请求(基本与axios步骤相同)。vue接口异步请求其他方法。

  

如何进行异步请求

  

一、axios实现异步请求

  1.项目中安装axiox

  npm安装-保存axios

  2.在main.js中引入以供全局使用

  从“axios”导入axios

  //可以为axios的ajax请求设置统一的主机和端口号。

  axios . defaults . baseurl= http://157 . 122 . 54 . 189:8080/;

  //将axios对象添加到Vue的prototype对象中,只需要使用这个。使用时的对象名。

  Vue.prototype.$http=axios

  3.axios之get请求

  Vue前端:

  模板

  差异

  /div

  /模板

  脚本

  导出默认值{

  方法:{

  getData(){

  //axios-get请求

  这个。$http.get(/getData1 )。then(r=console.log(r))//接口调用成功返回的数据。catch(err=console.log(err)),//接口调用失败返回的数据

  }

  }

  Mounted(){//在模板或el对应的html渲染完成后调用里面的方法。

  this.getData()

  }

  }

  /脚本

  style lang=scss 范围

  /风格

  背面节点:

  server.get(/getData1 ,function(req,res){

  资源发送({

  消息: aaa

  })

  })

  请求结果:

  4.axios之post请求

  Vue前端:

  两种形式的提交参数:

  //1.可以直接传入字符串name=张三age=19。

  //2.可以作为宾语传入{姓名:“三”,年龄:19}

  模板

  差异

  /div

  /模板

  脚本

  导出默认值{

  方法:{

  getData(){

  //axios-post请求值传递

  这个。$http({

  方法: post ,

  URL:“/get data 2”,

  标题:{

  “内容类型”:“应用程序/x-www-form-urlencoded”

  },

  数据:{

  姓名: xxx

  },

  transform request:[function(data){//更改传递值的格式。

  让ret=

  对于(让它进入数据){

  ret=encodeURIComponent(it)= encodeURIComponent(data[it])

  }

  返回ret.slice(0,ret.length-1)

  }],

  })。然后(r=console.log(r))。catch(err=console.log(err))

  }

  }

  Mounted(){//在模板或el对应的html渲染完成后调用里面的方法。

  this.getData()

  }

  }

  /脚本

  style lang=scss 范围

  /风格

  背面节点:

  server.post(/getData2 ,function(req,res){

  req.on(数据,函数(数据){

  console . log(query string . parse(decodeURIComponent(data)));

  });

  资源发送({

  消息: bbb

  })

  })

  结果:

  看到这里,你可能会奇怪为什么帖子请求这么繁琐。这和axios post方法默认使用application/json格式编码数据有关,生成的数据格式是request payload,不是我们常见的表单数据格式(Form data format)。

  使用这种编码方法,序列化的json字符串将被传递到后台,而不是我们想要的对象的形式。后端得到的值不能用原来的解析方法解析,会解析出错误的数据。所以在这里,前端可以将其转换成键值对再传递给后端,稍微处理一下就可以正常使用了。

  当然也可以在后端解决,解决方法更简单。只需使用body-parser中间件直接为Node解析json字符串。

  server.post(/getData2 ,bodyParser.json(),function(req,res){

  console . log(req . body);

  资源发送({

  消息: bbb

  })

  });

  

二、vue-resource实现异步请求(和axios步骤基本相同)

  1.项目中安装vue-resource

  npm安装-保存vue-资源

  2.在main.js中引入以供全局使用

  从“vue-resource”导入vueResource

  Vue.use(vueResource)//这里不一样

  3.vue-resource之get请求

  这个。$http.get(/getData1 )。then(r=console.log(r))//接口调用成功返回的数据。catch(err=console.log(err)),//接口调用失败返回的数据

  4.vue-resource之post请求

  这个。$http.post(/getData2 ,{name:bbb})。then(r=console.log(r))//接口调用成功返回的数据。catch(err=console.log(err)),//接口调用失败返回的数据

  5.vue-resource之jsonp请求

  这个. http $ jsonp(/get data 3 )。then(r=console.log(r))//接口调用成功返回的数据。catch(err=console.log(err)),//接口调用失败返回的数据

  注意

  如果在使用跨域请求之后还是无法获取到跨域的数据,前端可以使用代理的方式,假装是从同一域下请求的数据,修改配置下指数文件,如下图:

  在最后调用的时候直接:

  这个. http.get(/api/接口)

  

vue接口异步请求

  //查列表

  异步获取列表(页面索引){

  let data={

  页面索引,

  页面大小:this.pageSize

  }

  等待getCouponPageList(数据)。然后(res={

  const { data: { code,msg,data } }=res

  if (code===0) {

  data.list.forEach(v={

  五。总计金额=

  v.buyerPayAmount=

  })

  this.tableData=data.list

  data.list.forEach(async (ele,index)={

  if (ele.status===this .$t(已使用)) {

  让temp=等待这个。coupongetalipay(ele。账单明细)

  ele.totalAmount=临时总额/100

  this.tableData[index]=ele

  }

  })

  this.dataCount=data.total

  }否则{

  这个Message.error(消息)

  }

  this.loading=false

  }).接住(错误={

  console.log(错误消息)

  })

  },

  //根据编号查列表的后几项

  couponGetAlipay(订单号){

  返回新承诺((解决,拒绝)={

  couponGetAlipay({orderNo}).然后(res={

  const { data: { code,data } }=res

  if (code===0) {

  解析(数据)

  }

  }).接住(错误={

  console.log(错误消息)

  })

  })

  },

  

其他方法

  一:

  getData:异步函数(){ //同步方法

  尝试{ //顺序请求

  等等这个。getsetuplist();

  等等这个。getrolelist();

  等等这个。getlist();

  } catch (e) {}

  }

  二:

  getData:异步函数(){ //同步方法

  尝试{ //顺序请求

  等等这个。getsetuplist();

  等等这个。getrolelist();

  等等这个。getlist();

  } catch (e) {}

  }

  三:

  功能登录(代码){

  返回新承诺((解决,拒绝)={ //同步方法

  getData1().然后(response={ //方法一

  返回响应//返回正确值

  }).然后((res)={

  getData2().然后((响应)={ //方法一返回正确后执行方法二

  返回响应//返回正确值

  }).然后((res)={

  getData3().然后(response={ //方法二返回正确后执行方法三

  返回响应//返回正确值

  }).然后(res={

  getData4().然后(response={ //方法三返回正确后执行方法四

  解决(响应)//方法执行完毕,抛出最后结果或进行某些操作

  }).catch(res={

  拒绝(方法四返回错误)

  })

  }).catch(res={

  拒绝(方法三返回错误)

  })

  }).catch(res={

  拒绝(方法二返回错误)

  })

  }).catch(res={

  拒绝(方法一返回错误)

  })

  })

  }

  以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: