91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

vue-resource中怎么通過調用promise獲取數據

發布時間:2021-07-09 14:02:49 來源:億速云 閱讀:254 作者:Leah 欄目:web開發

本篇文章給大家分享的是有關vue-resource中怎么通過調用promise獲取數據,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。

先來說說 vue-resource

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

vue-resource的優勢和介紹,可以通過下面這個地址來了解。

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

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

引入vue-resource后,可以基于全局的Vue對象使用http,也可以基于某個Vue實例使用http。現在的項目中,基本上都是后者,因此在不同組件的beforeCreate或mounted鉤子中取。

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

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

在發送請求后,使用then方法來處理響應結果,then方法有兩個參數,第一個參數是響應成功時的回調函數,第二個參數是響應失敗時的回調函數。

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

再簡單介紹一下Promise對象

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

ES6的Promise對象是一個構造函數,用來生成Promise實例。下面是Promise對象的基本用法。

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

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

下面我們來直接使用:

假如我們請求下面這個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": "錯誤信息",
 "content": "",
 "is_mobile_user": true,
 "jssdk": {
  "appId": "wxec4d172a4f73ee6f",
  "timestamp": "1487750749",
  "nonceStr": "58ad465dd5ba5",
  "signature": "4aa01f5a89ce79ee4c53249e0cdb84800f841004"
 }
}

get 傳統的寫法

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

get ES6的語法 直接用解構賦值和剪頭函數的方式

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

post 傳統的語法

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;  // 取到數據
    } else {
      MessageBox('提示', data.msg);
    }
}, function (response) {   // 請求失敗
  MessageBox('提示', response.data.msg);
});

post ES6的語法,直接用解構賦值和剪頭函數的方式

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;  // 取到數據
    } else {
      MessageBox('提示', msg);
    }
}, ({data:{msg}}) => {   // 請求失敗
  MessageBox('提示',msg);
});

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

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

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

拼接一個參數:

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請求方式的語法(二)

拼接多個參數:

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);
   });

以上就是vue-resource中怎么通過調用promise獲取數據,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

锦州市| 神池县| 缙云县| 梁平县| 自治县| 隆安县| 太谷县| 鲁山县| 洪雅县| 浑源县| 青浦区| 上思县| 通海县| 华宁县| 舟曲县| 亳州市| 江西省| 汨罗市| 徐闻县| 阳东县| 天柱县| 紫金县| 万载县| 鄂尔多斯市| 枣阳市| 土默特左旗| 晋州市| 麻江县| 浙江省| 奇台县| 高安市| 宁夏| 门源| 兴海县| 保靖县| 大连市| 闽清县| 涟源市| 错那县| 太保市| 彩票|