js implementa el reintento de solicitud de interfaz

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.

8558467.jpg

Salida 404 tres veces seguidas en la consola, si la dirección se cambia a normal, el efecto es el siguiente

8558467.jpg

Al ver la solicitud, se descubre que la interfaz se llama solo una vez y se devuelve el resultado.

Supongo que te gusta

Origin blog.csdn.net/SongZhengxing_/article/details/128074175
Recomendado
Clasificación