Mi aiutate a capire una cosa?
Passo subito al sodo:
ho un'applicazione Web che fa una chiamata 2.0 per la conversione di un file MOLTO grosso in SWF; la chiamata può avere la forma (1) o (2) di cui sotto, le ho provate entrambe.
-> Fino a che il server non termina il suo compito, la chiamata rimane aperta ed il browser accoda le successive chiamate XHR. Ho quindi il browser bloccato fino a che la chiamata non termina.
Domande:
1. c'è modo di ovviare senza un timeout della chiamata (parallelizzare le XHR) ?
2. perchè se metto i timeout (decommentando i commenti sotto), il browser, pur presentando l'alert timeout, rimane lo stesso "bloccato" ?
Ho provato sia su Win che su nix, sia con Apache prefork mode che thread, ed anche con lighttpd...
Grazie.
(1)
(2)codice:dojo.xhrGet( { url: "interface.controlCenter.php?makeSwf&bookletId=<?php echo $bookletId;?>&fileName="+fileNames, preventCache: true, //timeout: 10000, load: function(response, ioArgs) { updateInternalFilesGrid(); }, //error: function(response, ioArgs) { alert("Timeout."); } });
codice:var uri = "interface.controlCenter.php?makeSwf&bookletId=<?php echo $bookletId;?>&fileName="+fileNames; if (typeof XMLHttpRequest!="undefined") xmlhttpmsif = new XMLHttpRequest(); else if (typeof window.ActiveXObject!="undefined") xmlhttpmsif = new ActiveXObject("Microsoft.XMLHTTP"); else return false; xmlhttpmsif.open("GET",uri,true); xmlhttpmsif.onreadystatechange = function() { if (xmlhttpmsif.readyState==4) updateInternalFilesGrid(); } xmlhttpmsif.send(null); //window.setTimeout("alert('Timeout.'); xmlhttpmsif.abort();",10000); // just to test.

Rispondi quotando
