一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

node.js|vue.js|jquery|angularjs|React|json|js教程|

服務器之家 - 編程語言 - JavaScript - 在vue中axios設置timeout超時的操作

在vue中axios設置timeout超時的操作

2021-09-14 16:35七俠劍客 JavaScript

這篇文章主要介紹了在vue中axios設置timeout超時的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

在做vue項目的時候,由于數據量查詢比較大,所以前臺調用接口數據的時候,往往要等很久,所以需要設置個超時,當超過設置時間就讓向頁面返回一個狀態,讓使用者不用一直等。

通過官網api查詢,對其超時講解不是很多,但其和Jquery中請求非常類似

Jquery請求方式

?
1
2
3
4
5
6
7
8
9
10
11
$.ajax({
 url: '接口地址',
 type:'get', //請求方式get或post
 data:{}, //請求所傳的參數
 dataType: 'json', //返回的數據格式
 timeout: 4000, //設置時間超時,單位毫秒
 success: function(result) {
 console.log('OK')
 },
 error: console.log('error')
 })

vue中請求方式:

?
1
2
3
4
5
6
7
8
9
axios.post( //請求方式
url, //接口地址
params, //傳遞參數
{timeout: 1000 * 60 * 2}) //設置超時,單位毫秒
.then(function(res){
 console.log(res);
}).catch((error) => {
 console.log('error')
})

所以可以再請求中通過timeout設置請求超時

補充知識:vue中用axios請求接口,處理網絡失敗和網絡超時問題,axios攔截器

前端經常要對服務器的錯誤信息做處理,小編是頭一次做,就遇到了很多問題

首先,是封裝的請求數據的方法

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
import Vue from 'vue';
import axios from 'axios';
import qs from 'qs';
import wx from 'weixin-js-sdk';
import {
 Toast
} from 'mint-ui';
 
axios.defaults.timeout = 10000;
// 攔截
axios.interceptors.request.use(function (config) {
 return config
}, function (error) {
 return Promise.reject(error);
})
axios.interceptors.response.use(
 response => {
 if (typeof(response) != 'String'&&response.data.errno !== 0 && response.config.url.indexOf('searchorderoyidornumber') < 0 && response.config.url.indexOf('upload') < 0) {
  response.data['data'] = response.data['data'] || {};
  Toast(response.data.errmsg)
 }
 if (typeof(response) != 'String'&&response.data.errno == 3521) {
  localStorage.clear();
  location.href = '#/login'
 }
 return response.status == 200 ? response.data : response;
 // return response
 },
 error => {
 //String(error).toLowerCase().indexOf('timeout')
 if (error && error.stack.indexOf('timeout') > -1) {
  Toast('請求超時')
 }
 // let config = error.config;
 // if (!config || !config.retry) return Promise.reject(err);
 // config.__retryCount = config.__retryCount || 0;
 
 // // Check if we've maxed out the total number of retries
 // if (config.__retryCount >= config.retry) {
 // // Reject with the error
 // return Promise.reject(err);
 // }
 
 // // Increase the retry count
 // config.__retryCount += 1;
 
 // // Create new promise to handle exponential backoff
 // var backoff = new Promise(function (resolve) {
 // setTimeout(function () {
 //  resolve();
 // }, config.retryDelay || 1);
 // });
 
 // // Return the promise in which recalls axios to retry the request
 // return backoff.then(function () {
 // return axios(config);
 // });
 }
);
let axios_post = function (url, params) {
 return new Promise((resolve, reject) => {
 if (!localStorage.getItem('token') || localStorage.getItem('token') == '') {
  axios.get('/gettoken').then((res) => {
  localStorage.setItem('token', res.data.token)
  axios.post(url, qs.stringify(params),
  {
   headers: {
   'Content-Type': 'application/x-www-form-urlencoded'
   }
  }).then(res => {
   resolve(res)
  }).catch(err => {
   reject(err)
  })
  }).catch(err => {
  reject(err)
  })
 } else {
  params = url.indexOf('login') > -1 ? {
  ...params,
  _token: localStorage.getItem('token')
  } : {
  ...params,
  _token: localStorage.getItem('token'),
  S: localStorage.getItem('S'),
  U: localStorage.getItem('U')
  }
  let options = {};
  options['maxContentLength'] = 1024000000;
  if(url.indexOf('uplpoad') > -1){
  options['timeout'] = 1000 * 30;
  }
  axios.post(url, params, options).then(res => {
  resolve(res)
  }).catch(err => {
  reject(err)
  })
 }
 })
}
let axios_get = function (url, params) {
 let _params = typeof (params) == 'object' ? params : {}
 _params = {
 ..._params,
 S: localStorage.getItem('S'),
 U: localStorage.getItem('U')
 }
 return new Promise((resolve, reject) => {
 axios.get(url, {
  'params': _params
 }).then(res => {
  if (res.errno !== 0) {
  reject(res)
  }
  resolve(res)
 }).catch(err => {
  reject(err)
 })
 })
}
let getCookie = function(cookieName) {
 var cookieValue = "";
 if (document.cookie && document.cookie != '') {
  var cookies = decodeURIComponent(document.cookie).split(';');
  for (var i = 0; i < cookies.length; i++) {
   var cookie = cookies[i].trim();
   // if (cookie.substring(0, cookieName.length + 1).trim() == cookieName.trim() + "=") {
   //  cookieValue = cookie.substring(cookieName.length + 1, cookie.length);
   //  break;
   // }
   var cookie = cookies[i].trim();
   var cookieArr = cookie.split('=');
   if(cookieArr[0] == cookieName.trim()){
    cookieValue = cookieArr[1];
    break;
   }
  }
 }
 return cookieValue;
}
 
let setCookie = function(name,value){
 var Days = 30;
 var exp = new Date();
 exp.setTime(exp.getTime() + Days*24*60*60*1000);
 document.cookie = name + "="+ escape (value) + ";expires=" + exp.toGMTString();
}
 
Vue.prototype.$http = axios;
Vue.prototype.$get = axios_get;
Vue.prototype.$post = axios_post;
Vue.prototype.$getCookie = getCookie;
Vue.prototype.$setCookie = setCookie;

在組件中直接this.$post()這樣用即可。

以上這篇在vue中axios設置timeout超時的操作就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持服務器之家。

原文鏈接:https://blog.csdn.net/qq_36727756/article/details/93738441

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 四虎永久免费地址ww417 | 国产一区二区在线观看视频 | 日本阿v精品视频在线观看 日本xxx片免费高清在线 | 国产福利资源 | 免费抽搐一进一出印度 | 精品国产mmd在线观看 | 日本三级香港三级久久99 | 精品国产一区二区三区久久久蜜臀 | 亚洲欧美日韩久久一区 | fuqer日本 | 国产剧情在线播放 | 国产精品视频一区二区三区不卡 | 国产在线98福利播放视频免费 | 日韩成人精品在线 | 亚洲色图网址 | 国产成人久久精品区一区二区 | 日韩小视频在线观看 | 欧美办公室激情videos高清 | 黄网久久 | 欧美一卡二卡科技有限公司 | 久久re亚洲在线视频 | 美日韩在线观看 | 国产在线精品香蕉综合网一区 | 精品免费| 果冻传媒天美传媒在线小视频播放 | 欧美肥胖bb | 超级乱淫伦短篇在车上 | 国产探花在线观看 | 五月天色综合 | 午夜精品久久久内射近拍高清 | 91麻豆国产精品91久久久 | 乌克兰粉嫩摘花第一次 | 精品高潮呻吟99AV无码 | 亚洲日本aⅴ片在线观看香蕉 | 美女mm131爽爽爽久久 | 男男双性生子产乳高辣h | a级成人毛片免费图片 | 亚洲第一色视频 | 美女被草逼| 日韩综合网| 楚乔传第二部免费观看全集完整版 |