最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

vue-resource調(diào)用promise取數(shù)據(jù)方式詳解

 更新時(shí)間:2017年07月21日 11:34:13   作者:湯利利  
這篇文章主要介紹了vue-resource調(diào)用promise取數(shù)據(jù)方式詳解,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧

用了好久的vue-resource,好像每一次使用的時(shí)候,都要去看一下上一次是怎么寫的,具體的語法過不了多久又忘記了,甚至不知道其中的原理,只知道一些簡單的使用,一會(huì)兒用ES6的語法,一會(huì)兒又用傳統(tǒng)的語法,為了改變這種不良的習(xí)慣,并理清vue-resource使用promise取數(shù)據(jù)的原理,今天把這一塊整理一下。

先來說說 vue-resource

vue-resource是Vue.js的一款插件,它可以通過XMLHttpRequest或JSONP發(fā)起請求并處理響應(yīng)。也就是說,$.ajax能做的事情,vue-resource插件一樣也能做到,而且vue-resource的API更為簡潔。

vue-resource的優(yōu)勢和介紹,可以通過下面這個(gè)地址來了解。

Vue.js——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

我現(xiàn)在的工作中,常用的就是get和post。

引入vue-resource后,可以基于全局的Vue對象使用http,也可以基于某個(gè)Vue實(shí)例使用http?,F(xiàn)在的項(xiàng)目中,基本上都是后者,因此在不同組件的beforeCreate或mounted鉤子中取。

// 基于全局Vue對象使用http
Vue.http.get('/someUrl', [options]).then(successCallback, errorCallback);
Vue.http.post('/someUrl', [body], [options]).then(successCallback, errorCallback);

// 在一個(gè)Vue實(shí)例內(nèi)使用$http
this.$http.get('/someUrl', [options]).then(successCallback, errorCallback);
this.$http.post('/someUrl', [body], [options]).then(successCallback, errorCallback);

在發(fā)送請求后,使用then方法來處理響應(yīng)結(jié)果,then方法有兩個(gè)參數(shù),第一個(gè)參數(shù)是響應(yīng)成功時(shí)的回調(diào)函數(shù),第二個(gè)參數(shù)是響應(yīng)失敗時(shí)的回調(diào)函數(shù)。

vue-resource支持Promise API,Promise是ES6的特性,Promise的中文含義為“先知”,Promise對象用于異步計(jì)算。

再簡單介紹一下Promise對象

ES6原生提供了Promise對象。所謂Promise對象,就是代表了未來某個(gè)將要發(fā)生的事件(通常是一個(gè)異步操作)。它的好處在于,有了Promise對象,就可以將異步操作以同步操作的流程表達(dá)出來,避免了層層嵌套的回調(diào)函數(shù)。此外,Promise對象還提供了一整套完整的接口,使得可以更加容易地控制異步操作。Promise對象的概念的詳細(xì)解釋,請參考《JavaScript標(biāo)準(zhǔn)參考教程》。

ES6的Promise對象是一個(gè)構(gòu)造函數(shù),用來生成Promise實(shí)例。下面是Promise對象的基本用法。

var promise = new Promise(function(resolve, reject) {
 if (/* 異步操作成功 */){
  resolve(value);
 } else {
  reject(error);
 }
});

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

下面我們來直接使用:

假如我們請求下面這個(gè)json文件:

// 請求成功
{
  "code": 0,
  "msg": "get member success",
  "content": {
    "plank_id": "1",
    "start_at": "1234567890",
    "status": "3",
    "members_num": 1,
    "members": [
      {
        "id": "14",
        "name": "",
        "avatar": "",
        "status": "3"
      }
    ]
  },
  "is_mobile_user": false,
  "jssdk": {
    "appId": "wxec4d172a4f73ee6f",
    "timestamp": "1490367697",
    "nonceStr": "58d534d1b536a",
    "signature": "d8d8ceb0f39ddeb3085fd197e5df5caddb1f1ba1"
  }
}

// 請求失敗
{
 "code": 1,
 "msg": "錯(cuò)誤信息",
 "content": "",
 "is_mobile_user": true,
 "jssdk": {
  "appId": "wxec4d172a4f73ee6f",
  "timestamp": "1487750749",
  "nonceStr": "58ad465dd5ba5",
  "signature": "4aa01f5a89ce79ee4c53249e0cdb84800f841004"
 }
}

get 傳統(tǒng)的寫法

import {MessageBox} from 'mint-ui';
this.$http.get(dataUrl)
  .then(function (response) {  // 請求成功 
    let data = response.data;
    if (data.code === 0) {
      this.content = data.content;   // 取到數(shù)據(jù)
    } else {
      MessageBox('提示', data.msg);
    }
  }, function (response) { // 請求失敗 
    MessageBox('提示', response.data.msg);
  })

get ES6的語法 直接用解構(gòu)賦值和剪頭函數(shù)的方式

import {MessageBox} from 'mint-ui';
this.$http.get(dataUrl)
  .then(({data:{code, content, jssdk, msg}}) => {  // 請求成功 
    if (data.code === 0) {
      this.content = content;   // 取到數(shù)據(jù)
    } else {
      MessageBox('提示', msg);
    }
  }, ({data:{msg}}) => { // 請求失敗 
    MessageBox('提示',msg);
  });

post 傳統(tǒng)的語法

let group_id = this.$route.params.id;
let data = {
   group_id: group_id,
   mobile: this.mobile,
   code: this.smsCode,
   name: this.memberName
};
import {MessageBox} from 'mint-ui';
this.$http.post(checkUrl, data)
  .then(function (response) { // 請求成功
    let data = response.data;
    if (data.code === 0) {
      this.content = data.content;  // 取到數(shù)據(jù)
    } else {
      MessageBox('提示', data.msg);
    }
}, function (response) {   // 請求失敗
  MessageBox('提示', response.data.msg);
});

post ES6的語法,直接用解構(gòu)賦值和剪頭函數(shù)的方式

let group_id = this.$route.params.id;
let data = {
   group_id: group_id,
   mobile: this.mobile,
   code: this.smsCode,
   name: this.memberName
};
import {MessageBox} from 'mint-ui';
this.$http.post(checkUrl, data)
  .then(({data:{code, content, jssdk, msg}}) => {  // 請求成功
    if (code === 0) {
      this.content = content;  // 取到數(shù)據(jù)
    } else {
      MessageBox('提示', msg);
    }
}, ({data:{msg}}) => {   // 請求失敗
  MessageBox('提示',msg);
});

使用解構(gòu)賦值和剪頭函數(shù)可以讓代碼更簡潔,使用起來更方便,我們在{data:{code, content, jssdk, msg}}中的數(shù)據(jù),實(shí)際上是JS引擎把promise給你的參數(shù)結(jié)構(gòu)了,因此,你可以直接取到。

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

將post請求方式改成get請求方式的語法(一)

拼接一個(gè)參數(shù):

const checkUrl = 'plank-show/start?start_at=' + (new Date()).valueOf();
this.$http.get(checkUrl)
   .then(({data:{code, content, jssdk, msg}}) => {
     if (code == 0) {
        MessageBox('提示', msg);
     } else {
        MessageBox('提示', msg);
     }
  }, ({data:{msg}}) => {
     MessageBox('提示', msg);
  });

將post請求方式改成get請求方式的語法(二)

拼接多個(gè)參數(shù):

let queryData = this.$route.query;
let dataUrl = "member/coach?group_id=" + queryData.my_group_id + "&id=" + queryData.cheer_id;
this.$http.get(dataUrl)
   .then(({data:{code, content, jssdk, msg}}) => {
     if (code === 0) {
        this.content = content;
     } else {
        MessageBox('提示', msg)
     }
   }, ({data:{msg}}) => {
      MessageBox('提示', msg);
   });

以上這些,基本上夠我現(xiàn)在在項(xiàng)目中使用,使用多次之后,會(huì)發(fā)現(xiàn)將 vue-resource、promise、ES6語法結(jié)合使用,真的很簡單很清淅,在以后的工作中,如果遇到了其他的需求,再補(bǔ)上整理后內(nèi)容。

希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • el-menu實(shí)現(xiàn)橫向溢出截取的示例代碼

    el-menu實(shí)現(xiàn)橫向溢出截取的示例代碼

    在進(jìn)行vue開發(fā)的時(shí)候,我們不可避免會(huì)使用到導(dǎo)航菜單,element方便的為我們提供了導(dǎo)航菜單組件,下面這篇文章主要給大家介紹了關(guān)于el-menu實(shí)現(xiàn)橫向溢出截取的相關(guān)資料,需要的朋友可以參考下
    2022-06-06
  • vue引入ueditor及node后臺(tái)配置詳解

    vue引入ueditor及node后臺(tái)配置詳解

    這篇文章主要介紹了vue引入ueditor及node后臺(tái)配置詳解,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-01-01
  • Vue組件BootPage實(shí)現(xiàn)簡單的分頁功能

    Vue組件BootPage實(shí)現(xiàn)簡單的分頁功能

    這篇文章主要為大家詳細(xì)介紹了Vue小組件BootPage實(shí)現(xiàn)簡單的分頁功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-09-09
  • vue中iframe使用以及結(jié)合postMessage實(shí)現(xiàn)跨域通信

    vue中iframe使用以及結(jié)合postMessage實(shí)現(xiàn)跨域通信

    這篇文章主要介紹了vue中iframe使用以及結(jié)合postMessage實(shí)現(xiàn)跨域通信方式,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-09-09
  • 在vue中動(dòng)態(tài)修改css其中一個(gè)屬性值操作

    在vue中動(dòng)態(tài)修改css其中一個(gè)屬性值操作

    這篇文章主要介紹了在vue中動(dòng)態(tài)修改css其中一個(gè)屬性值操作,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12
  • Vue實(shí)現(xiàn)PopupWindow組件詳解

    Vue實(shí)現(xiàn)PopupWindow組件詳解

    這篇文章主要為大家詳細(xì)介紹了Vue實(shí)現(xiàn)PopupWindow組件,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-04-04
  • Vue-CLI 3 scp2自動(dòng)部署項(xiàng)目至服務(wù)器的方法

    Vue-CLI 3 scp2自動(dòng)部署項(xiàng)目至服務(wù)器的方法

    這篇文章主要介紹了Vue-CLI 3 scp2自動(dòng)部署項(xiàng)目至服務(wù)器的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • vue數(shù)字金額動(dòng)態(tài)變化功能實(shí)現(xiàn)方法詳解

    vue數(shù)字金額動(dòng)態(tài)變化功能實(shí)現(xiàn)方法詳解

    這篇文章主要介紹了vue實(shí)現(xiàn)數(shù)字金額動(dòng)態(tài)變化效果,數(shù)字動(dòng)態(tài)變化是我們在前端開發(fā)中經(jīng)常需要做的效果,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧
    2022-09-09
  • ant design vue中table表格滾動(dòng)加載實(shí)現(xiàn)思路

    ant design vue中table表格滾動(dòng)加載實(shí)現(xiàn)思路

    在處理一寫數(shù)據(jù)量特別大的情況下,我們不能把后端的數(shù)據(jù)一次性全部拿到前端在table表格中展示,為了考慮性能優(yōu)化,使用了滾動(dòng)加載表格數(shù)據(jù),這篇文章主要介紹了ant design vue中table表格滾動(dòng)加載實(shí)現(xiàn)思路,需要的朋友可以參考下
    2024-07-07
  • 詳解Vue中組件的緩存

    詳解Vue中組件的緩存

    這篇文章主要介紹了Vue中組件的緩存,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04

最新評論

贺州市| 乌兰察布市| 弥渡县| 民勤县| 鄂托克旗| 噶尔县| 曲阳县| 稻城县| 兴海县| 剑川县| 东丽区| 峨边| 峨山| 万安县| 房山区| 洛隆县| 旌德县| 衡山县| 乐亭县| 宁安市| 连州市| 久治县| 隆德县| 吉安市| 永顺县| 遵义县| 海阳市| 文安县| 乌恰县| 文登市| 聊城市| 介休市| 茌平县| 理塘县| 连江县| 新民市| 庆城县| 平乐县| 本溪市| 建昌县| 石嘴山市|