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

使用async await 封裝 axios的方法

 更新時(shí)間:2018年07月09日 10:30:49   作者:勇PAN高峰  
這篇文章主要介紹了使用async await 封裝 axios的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來(lái)看看吧

es6 的promise 逐步解決了層層回調(diào)的問題,es8的async await讓異步變成了同步的寫法,在vue中,可以通過封裝axios,使得所有的請(qǐng)求都可以使用同步寫法,同時(shí)處理錯(cuò)誤信息等,可以建一個(gè)api.js文件,全局創(chuàng)建api實(shí)例.

import axios from 'axios'
const qs = require('qs')
const api = {
 async get (url, data) {
  try {
   let res = await axios.get(url, {params: data})
   res = res.data
   return new Promise((resolve) => {
    if (res.code === 0) {
     resolve(res)
    } else {
     resolve(res)
    }
   })
  } catch (err) {
   alert('服務(wù)器出錯(cuò)')
   console.log(err)
  }
 },
 async post (url, data) {
  try {
   let res = await axios.post(url, qs.stringify(data))
   res = res.data
   return new Promise((resolve, reject) => {
    if (res.code === 0) {
     resolve(res)
    } else {
     reject(res)
    }
   })
  } catch (err) {
   // return (e.message)
   alert('服務(wù)器出錯(cuò)')
   console.log(err)
  }
 },
}
export { api }

上述代碼中,首先采用try,catch 捕獲請(qǐng)求的錯(cuò)誤, 如果網(wǎng)絡(luò)狀態(tài)差,服務(wù)器錯(cuò)誤等 ,然后在請(qǐng)求成功狀態(tài)中,亦可統(tǒng)一處理請(qǐng)求代碼,這個(gè)可以根據(jù)具體項(xiàng)目處理,上例表示code=0的時(shí)候?yàn)榻Y(jié)果正確狀態(tài).

使用可以參考如下,以vue項(xiàng)目為例:

import { api } from 'common/js/api'

export default {
 data () {
  return {
   list: [],
  }
 },
 created () {
  this.getList()
 },
 methods: {
  async getList () {
   let {data} = await api.get('/ferring/test/list')
   console.log(data)
   this.list = data
  }
 },
}

有時(shí)候我們可能想比如錯(cuò)誤處理能通過vue的一些組件比如toast這樣的彈出,但是這個(gè)api.js不是在項(xiàng)目中,那該如何用呢, 下面以vue項(xiàng)目為例簡(jiǎn)述:

有些ui庫(kù),比如element ui這種,已經(jīng)將toast這種做成了插件,可以直接用this示例打開彈窗

<template>
 <el-button type="text" @click="open">點(diǎn)擊打開 Message Box</el-button>
</template>

<script>
 export default {
  methods: {
   open() {
    this.$alert('這是一段內(nèi)容', '標(biāo)題名稱', {
     confirmButtonText: '確定',
     callback: action => {
      this.$message({
       type: 'info',
       message: `action: ${ action }`
      });
     }
    });
   }
  }
 }
</script>

以上代碼摘自element Ui ,如果想全局處理,在api.js中,如何獲取vue的this示例呢,在main.js里面,可以將vue實(shí)例掛載在window對(duì)象上

/* eslint-disable no-new */
window.wm = new Vue({
 el: '#app',
 router,
 render: h => h(App),
})

那么回到剛剛的api.js ,則可以直接在resolve 或者catch的情況下,調(diào)用 window.wm.$alert,這樣就可以借用vue的插件形式調(diào)用彈窗組件了.

如果沒有這種用this調(diào)用的 彈窗組件,我們也可以寫一個(gè)放在app.vue下, 然后通過vuex全局控制,

那么可以在api.js中引入store

import store from '../store'

在catch 或者 resolve條件下

store.commit('showDialog',{true,'請(qǐng)求出錯(cuò)'})

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • JavaScript設(shè)置、獲取、清除單值和多值cookie的方法

    JavaScript設(shè)置、獲取、清除單值和多值cookie的方法

    cookie 是存儲(chǔ)于訪問者的計(jì)算機(jī)中的變量。每當(dāng)同一臺(tái)計(jì)算機(jī)通過瀏覽器請(qǐng)求某個(gè)頁(yè)面時(shí),就會(huì)發(fā)送這個(gè) cookie。你可以使用 JavaScript 來(lái)創(chuàng)建和取回 cookie 的值,本文通過一段代碼給大家介紹js設(shè)置、獲取、清除單值和多值cookie的方法,需要的朋友一起學(xué)習(xí)吧
    2015-11-11
  • Omi v1.0.2發(fā)布正式支持傳遞javascript表達(dá)式

    Omi v1.0.2發(fā)布正式支持傳遞javascript表達(dá)式

    這篇文章主要介紹了Omi v1.0.2發(fā)布正式支持傳遞javascript表達(dá)式,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2017-03-03
  • javascript最基本的函數(shù)匯總

    javascript最基本的函數(shù)匯總

    這篇文章主要給大家匯總介紹了javascript最基本的7個(gè)函數(shù),十分的實(shí)用,有需要的小伙伴可以參考下。
    2015-06-06
  • 基于javascript簡(jiǎn)單實(shí)現(xiàn)對(duì)身份證校驗(yàn)

    基于javascript簡(jiǎn)單實(shí)現(xiàn)對(duì)身份證校驗(yàn)

    這篇文章主要介紹了基于javascript簡(jiǎn)單實(shí)現(xiàn)對(duì)身份證校驗(yàn)的相關(guān)資料,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-02-02
  • 關(guān)于js注冊(cè)事件的常用方法

    關(guān)于js注冊(cè)事件的常用方法

    為了兼容各種瀏覽器,今天沒事特意復(fù)習(xí)了一下js原生事件特性,對(duì)其封裝一下。
    2013-04-04
  • 微信小程序訪問豆瓣電影api的實(shí)現(xiàn)方法

    微信小程序訪問豆瓣電影api的實(shí)現(xiàn)方法

    這篇文章主要介紹了微信小程序訪問豆瓣電影api的實(shí)現(xiàn)方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來(lái)看看吧
    2019-03-03
  • JS優(yōu)化冗余代碼的技巧分享

    JS優(yōu)化冗余代碼的技巧分享

    這篇文章主要為大家整理了18個(gè)JavaScript優(yōu)化冗余代碼的技巧,文中的示例代碼簡(jiǎn)潔易懂,具有一定的借鑒價(jià)值,感興趣的小伙伴可以了解一下
    2023-08-08
  • js實(shí)現(xiàn)圖片上傳并正常顯示

    js實(shí)現(xiàn)圖片上傳并正常顯示

    這篇文章主要介紹了js實(shí)現(xiàn)圖片上傳并正常顯示,我們經(jīng)常遇到上傳照片的情況,如何實(shí)現(xiàn)圖片上傳,本文為大家進(jìn)行揭曉,感興趣的小伙伴們可以參考一下
    2015-12-12
  • javascript 關(guān)于賦值、淺拷貝、深拷貝的個(gè)人理解

    javascript 關(guān)于賦值、淺拷貝、深拷貝的個(gè)人理解

    關(guān)于賦值、淺拷貝、深拷貝,以前也思考良久,很多時(shí)候都以為記住了,但是,我太難了。今天我特地寫下筆記,希望可以完全掌握這個(gè)東西,也希望可以幫助到任何想對(duì)學(xué)習(xí)這個(gè)東西的同學(xué)
    2019-11-11
  • JS尾遞歸的實(shí)現(xiàn)方法及代碼優(yōu)化技巧

    JS尾遞歸的實(shí)現(xiàn)方法及代碼優(yōu)化技巧

    這篇文章主要介紹了JS尾遞歸的實(shí)現(xiàn)方法及代碼優(yōu)化技巧,結(jié)合實(shí)例形式分析了尾遞歸的原理、JS實(shí)現(xiàn)方法及優(yōu)化技巧,需要的朋友可以參考下
    2019-01-01

最新評(píng)論

汝南县| 江口县| 红安县| 古浪县| 永济市| 高要市| 西城区| 广水市| 景泰县| 嘉义市| 漳浦县| 九江县| 崇左市| 左贡县| 得荣县| 云霄县| 宁武县| 太仆寺旗| 宁安市| 九江市| 交城县| 罗源县| 永州市| 远安县| 武冈市| 内黄县| 衡南县| 灵寿县| 葵青区| 深水埗区| 齐河县| 青阳县| 三原县| 洛隆县| 铁岭市| 葵青区| 长汀县| 来宾市| 钟祥市| 建水县| 高青县|