JS ile senkron request yaparken IE'ın donmaması için ne yapılabilir? aslında yapmak istediğim request yapılmadan önce, request yapıldığını kullanıcıya bildiren bir ifade kullanmak. fonksiyon içinde bu kodlar request'ten önce olmasına rağmen IE yanıt gelene kadar donuyor ve bu kodların yaptığı işin sonucu cevap geldikten sonra görünüyor. o zaman da bir işe yaramıyor.
function DoIt() {
// 1) request oncesindeki islemler
// 2) senkron request
// 3) request sonrasindaki islemler
}
1 nolu bölümdeki işlemlerin sonucunu gördükten sonra donsa problem değil ama ahmak (bence) browser sanki her şey aynı anda olacakmış gibi saçmalıyor (bence).
geçici çözüm olarak kodu ikiye bölerek denedim.
function DoItThread() {
// 2) senkron request
// 3) request sonrasindaki islemler
}
function DoIt() {
// 1) request oncesindeki islemler
setTimeout("DoItThread()", 1500);
}
bu şekilde yapınca request öncesindeki işlemlerin sonucunu görebiliyorum fakat setTimeout'a gönderdiğim ikinci parametre 1000'den daha az olduğunda IE iyice sapıtıp bir daha yanıt vermiyor. bu şekilde request'i 1.5 sniye kadar geciktirip yapıyorum.
bu olaydan başka türlü nasıl kurtulabilirim? ya da hazır kütüphanelerde asenkron bir request'i senkron request gibi ele alabileceğim fonksiyon ya da sınıflar mevcut mudur?
teşekkürler.
NOT: asenkron yapmayı şimdilik istemiyorum çünkü request içeren her fonksiyon içinde readystate değişimlerini ele almakla uğraşmak istemiyorum. en azından buna operasyonlardan bağımsız bir çözüm bulan kadar.
|