Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

142
Visualizações
Usando un CancelToken con una instancia de axios

He leído varias preguntas similares, pero todavía tengo problemas para poder cancelar mis solicitudes dada la estructura de mi código.

Al hacer clic en uno de los siguientes elementos, me gustaría poder cancelar todas las demás solicitudes, excepto la nueva, sin embargo, parece cancelar todas las solicitudes y luego evita que Axios realice nuevas. Soy nuevo en la cancelación de tokens, así que realmente no sé qué estoy haciendo mal aquí:

 import {cancelTokenSource} from 'API'; let isActiveRequest; document.body.addEventListener('click', async(e) => { const userElement = e.target.closest('.user-element'); const appElement = e.target.closest('.app-element'); if(isActiveRequest) { cancelTokenSource.cancel(); isActiveRequest = false; } if(userElement) { isActiveRequest = true; try{ const users = await Admin.getUsers(); isActiveRequest = false; // display users } catch(err) { isActiveRequest = false; } } if(appElement) { isActiveRequest = true; try{ const applications = await Admin.getApplications(); isActiveRequest = false; // display applications } catch(err) { isActiveRequest = false; } } });

API.js

 export const cancelTokenSource = axios.CancelToken.source(); export default axios.create({ baseURL: 'http://localhost:8080', cancelToken: cancelTokenSource.token });

Admin.js

 export default class Admin { getUsers({index, limit, orderField, orderDirection}) { return API.get('/admin/applicants', { params: { index, limit, orderField, orderDirection } }); } getApplications({index, limit, orderField, orderDirection}) { return JRS.get('/admin/applications', { params: { index, limit, orderField, orderDirection} }); ... }

Gracias

*** Actualizar

Pensé que tal vez necesitaba un nuevo token de cancelación por solicitud (ya que tal vez sea el token anterior el que bloquea cualquier solicitud nueva), así que intenté esto:

API.js

 export let cancelTokenSource; export default axios.create({ baseURL: 'http://localhost:8080', cancelToken: new axios.CancelToken(c => cancelTokenSource = c), });

principal.js

 if(isActiveRequest) { cancelTokenSource(); isActiveRequest = false; }

Pero sin suerte. Supongo que tal vez porque la instancia de axios es la misma para cada solicitud.

Voy a intentar agregar el token de cancelación a las funciones de Admin.js a continuación.

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Sí, al agregar el token de cancelación a las solicitudes individuales, en lugar de la instancia de axios funcionó:

 import {cancelTokenSource} from 'Admin'; // Different let isActiveRequest; document.body.addEventListener('click', async(e) => { const userElement = e.target.closest('.user-element'); const appElement = e.target.closest('.app-element'); if(isActiveRequest) { cancelTokenSource(); // Different isActiveRequest = false; } if(userElement) { isActiveRequest = true; try{ const users = await Admin.getUsers(); isActiveRequest = false; // display users } catch(err) { isActiveRequest = false; } } if(appElement) { isActiveRequest = true; try{ const applications = await Admin.getApplications(); isActiveRequest = false; // display applications } catch(err) { isActiveRequest = false; } } });

API.js

 // Cancel token removed export default axios.create({ baseURL: 'http://localhost:8080', });

Admin.js

 export let cancelTokenSource; // Added from API.js export default class Admin { getUsers({index, limit, orderField, orderDirection}) { return API.get('/admin/applicants', { params: { index, limit, orderField, orderDirection }, cancelToken: new axios.CancelToken(c => cancelTokenSource = c) // Added }); } getApplications({index, limit, orderField, orderDirection}) { return JRS.get('/admin/applications', { params: { index, limit, orderField, orderDirection} cancelToken: new axios.CancelToken(c => cancelTokenSource = c) // Added }); ... }
about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda