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

292
Visualizações
Espere a que finalice un evento de envío antes de llamar a la función asíncrona

Quiero ejecutar una función asíncrona después de que un formulario haya completado su envío. El formulario actualiza un carrito de compras y necesito tomar los productos del carrito después de agregarlos.

He intentado un millón de cosas y nada parece esperar hasta que el formulario se haya COMPLETADO antes de ejecutar mi código. No quiero usar ningún tipo de eventos de tiempo.

Aquí están las últimas dos versiones de código que tengo. Ambos hacen lo mismo y se ejecutan antes de que finalice el envío:

 window.addEventListener( 'submit', () => vueFreshie.$options.components['fresh-credit'].options.methods.getCart(), false ) window.addEventListener("submit", async e => { await vueFreshie.$options.components['fresh-credit'].options.methods.getCart() }, false)

este es el método Vue al que llamo, y lo he simplificado por ejemplo.

 methods: { async getCart() { let response = await axios.get(`/cart.js`) debugger } }

el método se llama bien, es demasiado pronto y el carro no se ha actualizado.

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

0

Aquí tienes: he usado un controlador de eventos onSubmit para escuchar el envío del formulario y axios para publicar explícitamente los datos en mi servidor. De esta manera, tengo más control sobre la solicitud de envío y puedo await a que se complete antes de continuar con la API de getCart .

 new Vue({ el: "#app", data: () => { return { formData: { firstName: '', lastName: '' } } }, methods: { async onSubmit() { const {data} = await axios.post('https://jsonplaceholder.typicode.com/posts', this.formData); console.log('response from submitted request', data); await this.getCart(); }, async getCart() { console.log('safe to call the get cart API now'); const {data} = await axios.get('https://jsonplaceholder.typicode.com/posts'); console.log('response from cart api', data); } } });
 <script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script> <script src="https://unpkg.com/axios/dist/axios.min.js"></script> <div id="app"> <form v-on:submit.prevent="onSubmit"> <input name="firstName" v-model="formData.firstName"><br/> <input name="lastName" v-model="formData.lastName"> <button type="submit">SUBMIT</button> </form> </div>

Referencia
  • Manejo de eventos en Vue
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