Pregunta

Tengo 2 funciones js, petición () y la respuesta (). Solicitud inyecta una etiqueta de script dinámico para DOM, cargando un poco de "guión" de servidor. La secuencia de comandos que viene del servidor está configurado para llamar a la respuesta ().

Ahora si hago 5 llamadas una tras otra inmediatamente, y si primero continúa esperando, los próximos 4 llamadas se siguen haciendo, vuelve la respuesta (vi que a partir de Firebug), pero la respuesta () no se llama hasta que los primeros se regresa.
Esto está ocurriendo sólo en Firefox. :(

¿Por qué es no hacer la llamada a la función?

PS:

  1. Si la primera solicitud se está retrasando, me no se preocupan por sus resultados, quiero la última en ser cargada y llamando la respuesta sin demoras ..
  2. Me trató con $ .ajax tipoDatos conjunto a 'jsonp', la inserción de estilo javascript puro de etiquetas de script y $ .getScript. Nada parece estar funcionando bien con FF: (

Editar: Para aquellos que solicitó ejemplos de código:

function request(){

    var URL = 'http://xxx.xxx.xxx.xxx/cgi-bin/response.php?callback=?';
    callHandle = $.getScript(URL);

}

function response(data){

      alert(data);
}

la función de llamadas de solicitud de script php del servidor, que ha siguiente código:

$data = $_GET['callback']; //using just to identify request uniquely.
sleep(rand(1,10));
echo "response(".$data.")";

Ahora bien, si la primera solicitud tarda 10 segundos, y la segunda solicitud tarda 2 segundos, la respuesta debería ser llamado de nuevo para la segunda solicitud. Pero se está haciendo la respuesta, pero en lugar de alertar, se está a la espera para la primera solicitud al completo en Firefox. ¿Por qué es esto así?

¿Fue útil?

Solución

He visto lo mismo: Firefox manejo de las respuestas de retorno (inclusiones hechas con javascript document.createElement ( 'script') y los añade a la Cabeza-Node) en el orden en que los elementos de script se adjuntaron al documento . Desde un punto de vista del programador Esto simplifica la programación. Sin embargo, creo que se debe tratar esto como un detalle de implementación de este navegador (versión), no una garantía. Google Chrome ejecuta las secuencias de comandos incluidos en cualquier orden (inesperado).

Este comportamiento ya se llama "comportamiento Antiguo Firefox" en la búsqueda de Firefox 4 y el cumplimiento de HTML5 ( http: //hsivonen.iki.fi/script-execution/ )

El comportamiento Antiguo Firefox

Script-insertado no asíncrono externo, alfabetos no de aplazamiento ejecutan en el orden en que se insertan en el documento.

¿Usted ha intentado la inserción de las secuencias de comandos con document.write?

Otros consejos

A menos que esto es por razones educativas, se sugiere emplear una biblioteca que trata especificamente con estas idiosincrasias del navegador. por ejemplo: http://code.google.com/p/controljs/

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top