encapsulación de métodos
Primero, cree un nuevo haveload.js, en el que la solicitud Ajax se encapsula dos veces, el código es el siguiente
import request from '@/utils/request'
// 可以重试的请求方法-get方法
export function retryServerGet(url, maxCount = 1, params = {
}) {
return new Promise((resolve, reject) => {
request
.get(url, {
params })
.then(res => {
resolve(res)
})
.catch(err => {
maxCount <= 1 ? reject(err) : retryServerGet(url, maxCount - 1, params)
})
})
}
// 可以重试的请求方法-post方法
export function retryServerPost(url, maxCount = 1, data = null) {
return new Promise((resolve, reject) => {
request
.post(url, data)
.then(res => {
console.log(res)
resolve(res)
})
.catch(err => {
maxCount <= 1 ? reject(err) : retryServerPost(url, maxCount - 1, data)
})
})
}
Hay dos métodos en el código anterior, que procesan la solicitud de obtención y la solicitud de publicación respectivamente, y ambos métodos reciben tres parámetros:
- La URL del primer parámetro: indica la dirección de la interfaz de solicitud.
- El segundo parámetro maxCount: el número máximo de solicitudes. Por ejemplo, si la interfaz quiere solicitar 5 veces, si una de las 5 solicitudes tiene éxito, no continuará solicitando más solicitudes y devolverá el resultado exitoso.
- El tercer parámetro: los parámetros transportados por la solicitud de interfaz.
Instrucciones
Introduzca el archivo anterior en el archivo, luego escriba un método personalizado y exporte
// 测试get方法
export function testGet1(params) {
return retryServerGet(`/home/getTotalSalesAndIndextest`, 3, params)
}
// 测试post方法
export function testPost() {
return retryServerPost(`/api/custom/conversions`, 3, null)
}
transferir
testGet1({
year: 2022}).then(res => {
console.log(res, '222222222')
})
La dirección de solicitud de obtención aquí no existe, pero le dejé repetir la llamada 3 veces para ver cuál es el resultado de la operación.
Salida 404 tres veces seguidas en la consola, si la dirección se cambia a normal, el efecto es el siguiente
Al ver la solicitud, se descubre que la interfaz se llama solo una vez y se devuelve el resultado.