您好,登錄后才能下訂單哦!
這篇文章主要介紹Axios怎么取消已發送的請求,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!
Axios 介紹
Axios是一個基于 promise 的 HTTP 庫,可以用在瀏覽器和 node.js 中。
Axios 使用 cancel token 取消請求
Axios的 cancel token API 基于cancelable promises proposal,它還處于第一階段。
可以使用 CancelToken.source 工廠方法創建 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 參數是可選的) source.cancel('Operation canceled by the user.');
2.還可以通過傳遞一個 executor 函數到 CancelToken 的構造函數來創建 cancel token:
var CancelToken = axios.CancelToken; var cancel; axios.get('/user/12345', { cancelToken: new CancelToken(function executor(c) { // executor 函數接收一個 cancel 函數作為參數 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
具體的業務組件:
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() // 請求發送前調用 this.page = val this.loadTable = true getLatenessDetail(this.params, (val - 1) * 10, this) .then( res => { this.loadTable = false this.tableData = res.data } ) } }
以上是“Axios怎么取消已發送的請求”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。