Ver Mensaje Individual
  #1 (permalink)  
Antiguo 11/11/2016, 09:06
Minniek
 
Fecha de Ingreso: enero-2009
Mensajes: 178
Antigüedad: 15 años, 10 meses
Puntos: 2
ajax y progreso

Buenas tardes a todos,
Escribo por aca porque tengo una duda que me esta volviendo loca.
Resulta que tengo una función en js llamada download que crea un archivo excel que posteriormente es descargado a través de un appendChild(). Resulta que paralelamente mientras se crea el archivo (tarda aprox 3 min en crearse) consulto a una funcion llamada getProgress que tiene el progreso actual de la descarga. Por alguna extraña razón getProgress aunque esta dentro de la función setinterval, éste no se actualiza ya que se queda esperando a que termine el excel de crearse y descargarse para luego actualizarse. No entiendo la razón.
Necesito que tanto la funcion getProgress y la funcion download se ejecuten en paralelo y no uno despues de otro.

Alguna idea?
pd// ambas funciones retornan el valor correcto sin error.

Muchas Gracias.

Código PHP:
  function getProgress()
    {
         
        $.
ajax({
            
urlRouting.generate('getProgresoTotal') + '/' project '/' file,
            
cachefalse,
            
asynctrue,
            
success: function (data) { 
                $(
'#progreso').text(data);
            },
            
error: function () { 
                $(
'#progreso').text('error');
            }
        });
    }
    function 
download()
    {

        $(
'#modal-wizard').show();
         
         var 
url Routing.generate('download_data') + '/' project '/' file '/' 20 '/' "2km";
         var 
elemIF document.createElement("iframe");
         
elemIF.src url;
         
elemIF.style.display 'none';
         
document.body.appendChild(elemIF);
         
         var 
inter window.setInterval(function () { 
         
getProgress();
         if (
elemIF.contentWindow.document.readyState === "complete") {
         
window.clearInterval(inter);
         $(
'#modal-wizard').hide();
         
clearInterval(refreshIntervalId);
         }
         }, 
100); 
         
         
window.onbeforeunload null

 
 
    }