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)
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."); }
});
(2)
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.