加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

vue-resource调用promise取数据方式详解

发布时间:2020-12-17 02:52:12 所属栏目:百科 来源:网络整理
导读:用了好久的vue-resource,好像每一次使用的时候,都要去看一下上一次是怎么写的,具体的语法过不了多久又忘记了,甚至不知道其中的原理,只知道一些简单的使用,一会儿用ES6的语法,一会儿又用传统的语法,为了改变这种不良的习惯,并理清vue-resource使用pr

用了好久的vue-resource,好像每一次使用的时候,都要去看一下上一次是怎么写的,具体的语法过不了多久又忘记了,甚至不知道其中的原理,只知道一些简单的使用,一会儿用ES6的语法,一会儿又用传统的语法,为了改变这种不良的习惯,并理清vue-resource使用promise取数据的原理,今天把这一块整理一下。

先来说说 vue-resource

vue-resource是Vue.js的一款插件,它可以通过XMLHttpRequest或JSONP发起请求并处理响应。也就是说,$.ajax能做的事情,vue-resource插件一样也能做到,而且vue-resource的API更为简洁。

vue-resource的优势和介绍,可以通过下面这个地址来了解。

vue-resource的API分别有以下这些:

  1. http get
  2. http jsonp
  3. http post
  4. http put
  5. http delete
  6. resource get
  7. resource save
  8. resource update
  9. resource remove
  10. inteceptor

我现在的工作中,常用的就是get和post。

引入vue-resource后,可以基于全局的Vue对象使用http,也可以基于某个Vue实例使用http。现在的项目中,基本上都是后者,因此在不同组件的beforeCreate或mounted钩子中取。

// 在一个Vue实例内使用$http
this.$http.get('/someUrl',errorCallback);
this.$http.post('/someUrl',errorCallback);

在发送请求后,使用then方法来处理响应结果,then方法有两个参数,第一个参数是响应成功时的回调函数,第二个参数是响应失败时的回调函数。

vue-resource支持Promise API,Promise是ES6的特性,Promise的中文含义为“先知”,Promise对象用于异步计算。

再简单介绍一下Promise对象

ES6原生提供了Promise对象。所谓Promise对象,就是代表了未来某个将要发生的事件(通常是一个异步操作)。它的好处在于,有了Promise对象,就可以将异步操作以同步操作的流程表达出来,避免了层层嵌套的回调函数。此外,Promise对象还提供了一整套完整的接口,使得可以更加容易地控制异步操作。Promise对象的概念的详细解释,请参考《》。

ES6的Promise对象是一个构造函数,用来生成Promise实例。下面是Promise对象的基本用法。

promise.then(function(value) {
// success
},function(value) {
// failure
});

下面我们来直接使用:

假如我们请求下面这个json文件:

// 请求失败
{
"code": 1,"msg": "错误信息","content": "","is_mobile_user": true,"jssdk": {
"appId": "wxec4d172a4f73ee6f","timestamp": "1487750749","nonceStr": "58ad465dd5ba5","signature": "4aa01f5a89ce79ee4c53249e0cdb84800f841004"
}
}

get 传统的写法

get ES6的语法 直接用解构赋值和剪头函数的方式

{ // 请求成功 if (data.code === 0) { this.content = content; // 取到数据 } else { MessageBox('提示',msg); } },({data:{msg}}) => { // 请求失败 MessageBox('提示',msg); });

post 传统的语法

post ES6的语法,直接用解构赋值和剪头函数的方式

{ // 请求成功 if (code === 0) { this.content = content; // 取到数据 } else { MessageBox('提示',msg); } },({data:{msg}}) => { // 请求失败 MessageBox('提示',msg); });

使用解构赋值和剪头函数可以让代码更简洁,使用起来更方便,我们在{data:{code,msg}}中的数据,实际上是JS引擎把promise给你的参数结构了,因此,你可以直接取到。

需要注意的是,第一个“MessageBox('提示',msg);”中的msg和第二个“MessageBox('提示',msg);”中的msg不是同一个,第一个是成功的msg,第二个是失败的msg。

将post请求方式改成get请求方式的语法(一)

拼接一个参数:

{ if (code == 0) { MessageBox('提示',msg); } else { MessageBox('提示',msg); } },({data:{msg}}) => { MessageBox('提示',msg); });

将post请求方式改成get请求方式的语法(二)

拼接多个参数:

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读