2012-05-23 26 views
6

Tengo un listado con 150 filas y para cada fila hay tres elementos seleccionados de piel.Script que no responde: ¿es posible evitarlo?

Como hay mucho trabajo por hacer antes de mostrar cada resultado, aparece un error que dice "Un script en esta página puede estar ocupado, o puede haber dejado de responder. Puede detener el script ahora, o puede seguir viendo si el script se completará ". y se refiere al archivo jquery.js.

¿Es posible evitar este error haciendo algún trabajo de jQuery?

Gracias.

+1

realmente no se puede decir sin que nos muestre ningún fragmento: S –

+0

http://stackoverflow.com/questions/1917380/how-to-avoid-the-unresponsive-script-popup-in-firefox-with-long -running-javascri – Dev

Respuesta

6

Necesita dividir su procesamiento en varias partes y darle al navegador algo de tiempo para hacer las cosas además de ellas usando 0 o 1 mseg setTimeout.

Un método muy fácil estaría utilizando el método de la biblioteca asyncforEachSeries:

async.forEachSeries(yourData, function(item, cb) { 
    // process item 
    async.nextTick(cb); 
}); 

yourData podría ser el objeto jQuery que contiene sus filas, a continuación, item será el elemento DOM de una fila.

+0

es '0 o 1 msec setTimeout' suficiente? – undefined

+0

sí, porque las tareas que están en espera se ejecutarán en el momento en que se detenga el script. JavaScript tiene un solo subproceso, por lo que la ejecución no se iniciará antes de que el código recién iniciado haya finalizado. Entonces la duración en realidad no importa – koenpeters

+0

Entonces, necesito agregar este tiempo de espera en el JS, no en el PHP, ¿verdad? – Psyche

0

No sé acerca de jQuery (si hay alguna envoltura disponible en jQuery), pero en JS vainilla existe el concepto de WebWorkers (la compatibilidad es bastante buena excepto IE - ver here).

Aquí comienza un hilo adicional a sus cálculos, que no bloquea su subproceso de interfaz de usuario. Cuando los cálculos se realizan y solo queda la pantalla de resultados, envía los datos del trabajador al hilo de la interfaz de usuario y solo muestra los resultados.

Para más detalles, eche un vistazo a MDN tutorial.

0

Descargar JavaScript cuando y cuando sea necesario, en lugar de descargarlo todo en la carga de la página.

On Demand JavaScript

0

gurú Rendimiento del sitio web de Steve Souders escribió acerca de este problema y cómo resolverlo en su libro "sitios web aún más rápido". Él describe una solución donde se usan tiempos de espera para que otros procesos también tengan algo de tiempo.

Here's la parte del libro que trata estos problemas.

Cuestiones relacionadas