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

171
Visualizações
¿Cómo esperar la solicitud y la entrada del usuario?

Digamos que cuando se carga un componente hago una solicitud asíncrona. Ese componente también tiene un botón de envío que el usuario puede presionar, lo que activa una función que se basa en el resultado de esa solicitud original. ¿Cómo retraso la ejecución de la función activada hasta que finaliza la solicitud asíncrona?

Si eso no tiene sentido déjame dar un ejemplo. MyComponent realiza una solicitud asíncrona getRandomColor() en el mounted . La plantilla de MyComponent tiene <button @click="handleClick"> . handleClick llama a alguna función saveColor() . ¿Cómo me aseguro de que no se llame a saveColor() hasta que termine mi async getRandomColor() ?

Actualmente estoy usando Vue.js pero creo que esta pregunta se aplica a todo javascript.

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

0

Puede lograr esto agregando :disabled en su elemento de botón. El valor de :disabled se basará en la respuesta. es decir, si la respuesta estará allí, habilítela, de lo contrario, desactívela.

Demostración de trabajo:

 const app = Vue.createApp({ el: '#app', data() { return { buttonText: 'Call Me!', apiResponse: [], isDisabled: false } }, methods: { saveColor() { console.log('saveColor method call'); } }, mounted() { axios.get("https://jsonplaceholder.typicode.com/users").then(response => { this.apiResponse = response.data; // Here we are getting proper response. hence, button is getting enabled. }).catch((error) => { console.warn('API error'); }); } }) app.mount('#app')
 <script src="https://unpkg.com/vue"></script> <script src="https://unpkg.com/axios/dist/axios.min.js"></script> <div id="app"> <button v-on:click="saveColor()" :disabled="!apiResponse.length">{{ buttonText }}</button> </div>

Agregar el fragmento a continuación según el comentario agregado por el autor de la publicación.

¿Qué pasa si no quiero usar el botón deshabilitado? ¿Hay alguna manera de hacer que el controlador de botones espere a que finalice la solicitud antes de continuar con la ejecución?

 const app = Vue.createApp({ el: '#app', data() { return { buttonText: 'Call Me!', apiResponse: [], isDisabled: false } }, methods: { saveColor() { console.log('saveColor method call'); } }, mounted() { axios.get("https://jsonplaceholder.typicode.com/users").then(response => { this.apiResponse = response.data; // Here we are getting proper response. hence, button is getting enabled. }).catch((error) => { console.warn('API error'); }); } }) app.mount('#app')
 <script src="https://unpkg.com/vue"></script> <script src="https://unpkg.com/axios/dist/axios.min.js"></script> <div id="app"> <button v-on:click.prevent="apiResponse.length ? saveColor() : {}">{{ buttonText }}</button> </div>

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