欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

詳解Axios 如何取消已發(fā)送的請求

 更新時間:2018年10月20日 17:11:28   作者:從零開始的異世界  
這篇文章主要介紹了詳解Axios 如何取消已發(fā)送的請求,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

前言

最近在項目中遇到一個問題,在連續(xù)發(fā)送同一請求時,如果第二次請求比第一次請求快,那么實際顯示的是第一次請求的數(shù)據(jù),這就會造成數(shù)據(jù)和我選擇的內容不一致的問題。解決的方案:在后續(xù)發(fā)送請求時,判斷之前的請求是否完成(同一個接口),如果未完成則立即取消。然后在發(fā)送新的請求。

Axios 介紹

Axios是一個基于 promise 的 HTTP 庫,可以用在瀏覽器和 node.js 中。

Axios 使用 cancel token 取消請求

Axios的 cancel token API 基于cancelable promises proposal,它還處于第一階段。

可以使用 CancelToken.source 工廠方法創(chuàng)建 cancel token,像這樣:

var CancelToken = axios.CancelToken;
var source = CancelToken.source();

axios.get('/user/12345', {
 cancelToken: source.token
}).catch(function(thrown) {
 if (axios.isCancel(thrown)) {
  console.log('Request canceled', thrown.message);
 } else {
  // 處理錯誤
 }
});

// 取消請求(message 參數(shù)是可選的)
source.cancel('Operation canceled by the user.');

2.還可以通過傳遞一個 executor 函數(shù)到 CancelToken 的構造函數(shù)來創(chuàng)建 cancel token:

var CancelToken = axios.CancelToken;
var cancel;

axios.get('/user/12345', {
 cancelToken: new CancelToken(function executor(c) {
  // executor 函數(shù)接收一個 cancel 函數(shù)作為參數(shù)
  cancel = c;
 })
});

// 取消請求
cancel();

我自己在項目中用的是第二種方案:

提取所有的 api 進行封裝:

import request from '../utils/request' // 配置過的Axios 對象
import axios from 'axios' 

export function getLatenessDetailSize(params, that) { 
  return request({
    url: '/api/v1/behaviour/latenessDetailSize', 
    method: 'post',
    params: params,
    cancelToken: new axios.CancelToken(function executor(c) { // 設置 cancel token
      that.source = c;
    })
  })
}

export xxx

具體的業(yè)務組件:

import { getLatenessDetail } from "../api";
export default {
    data() {
      return {
        tableData: [],
        total: 0,
        page: 1,
        loadTable: false,
        params: { },
        source: null
      }
    },
    methods: {
      cancelQuest() {
        if (typeof this.source === 'function') {
          this.source('終止請求'); //取消請求
        }
      },
      getTableData(val) {
        this.cancelQuest() // 請求發(fā)送前調用
        this.page = val
        this.loadTable = true
        getLatenessDetail(this.params, (val - 1) * 10, this)
          .then(
            res => {
              this.loadTable = false
              this.tableData = res.data
            }
        )
    }
}

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • 解決Vue+Electron下Vuex的Dispatch沒有效果問題

    解決Vue+Electron下Vuex的Dispatch沒有效果問題

    這篇文章主要介紹了Vue+Electron下Vuex的Dispatch沒有效果的解決方案 ,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-05-05
  • VUE中的export default和export使用方法解析

    VUE中的export default和export使用方法解析

    export default和export都能導出一個模塊里面的常量,函數(shù),文件,模塊等,在其它文件或模塊中通過import來導入常量,函數(shù),文件或模塊。但是,在一個文件或模塊中export,import可以有多個,export default卻只能有一個。
    2022-12-12
  • vue3使用element-plus搭建后臺管理系統(tǒng)之菜單管理功能

    vue3使用element-plus搭建后臺管理系統(tǒng)之菜單管理功能

    這篇文章主要介紹了vue3使用element-plus搭建后臺管理系統(tǒng)之菜單管理,使用element-plus el-tree組件快速開發(fā)樹形菜單結構,el-tree組件中filter-node-method事件便可以實現(xiàn)樹形菜單篩選過濾功能,需要的朋友可以參考下
    2022-04-04
  • vue-router路由懶加載及實現(xiàn)的3種方式

    vue-router路由懶加載及實現(xiàn)的3種方式

    這篇文章主要給大家介紹了關于vue-router路由懶加載及實現(xiàn)的3種方式,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-02-02
  • Vue中v-for的9種使用案例總結大全

    Vue中v-for的9種使用案例總結大全

    v-for是vue的循環(huán)指令,作用是遍歷數(shù)組(對象)的每一個值,這篇文章主要給大家介紹了關于Vue中v-for的9種使用案例的相關資料,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2023-12-12
  • Vue表單提交點擊事件只允許點擊一次的實例

    Vue表單提交點擊事件只允許點擊一次的實例

    這篇文章主要介紹了Vue表單提交點擊事件只允許點擊一次的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-10-10
  • Vue2.0子同級組件之間數(shù)據(jù)交互方法

    Vue2.0子同級組件之間數(shù)據(jù)交互方法

    下面小編就為大家分享一篇Vue2.0子同級組件之間數(shù)據(jù)交互方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-02-02
  • element日期組件實現(xiàn)只能選擇小時或分鐘

    element日期組件實現(xiàn)只能選擇小時或分鐘

    本文主要介紹了element日期組件實現(xiàn)只能選擇小時或分鐘,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-01-01
  • Vue 集成 storybook的方法

    Vue 集成 storybook的方法

    這篇文章主要介紹了Vue 集成 storybook的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-12-12
  • vue-cli安裝全過程(附帶cnpm安裝不成功及vue不是內部命令)

    vue-cli安裝全過程(附帶cnpm安裝不成功及vue不是內部命令)

    這篇文章主要介紹了vue-cli安裝全過程(附帶cnpm安裝不成功及vue不是內部命令),具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-11-11

最新評論