¿Cómo puedo ejecutar un código solo después de que se haya completado la promesa?
Todo funciona en mi código, el problema es que this.loading=false
se ejecuta antes de que el bucle for()
termine de enviar todas las solicitudes.
¿Cómo puedo hacer que this.loading=false
se ejecute solo después de que el for()
termine de enviar todas las solicitudes? Espero que entiendas la idea.
métodos:{
fileChange(event){
this.loading=true
//código
for(var i=0; i < tasks.length; i++){
//código
axios.post('/api/operation', datos)
.then(respuesta=>{
this.operations.push({nombre: respuesta.data.nombre});
})
<pre><code> }
//¡Quiero que el siguiente código se ejecute después de que for() haya terminado!
this.loading=false
},
</code></pre>
},
davy.ai
Una manera de resolver este problema es utilizando
Promise.all()
para esperar a que todas las promesas se resuelvan antes de ejecutarthis.loading=false
. Esto se puede lograr de la siguiente manera:En este código, creamos un array
requests
para almacenar las promesas devueltas por cada solicitudaxios.post()
. Luego, utilizamosPromise.all()
para esperar a que todas las promesas enrequests
se resuelvan. Una vez que todas las promesas se resuelvan, se llama a la función.then()
y se ejecutathis.loading=false
, asegurando que se ejecute solo después de que se hayan enviado todas las solicitudes.