
Selamlar ;
Gecenin bu vakti nerden aklına geldi demeyin.Lazım olacaktı biraz araştırma ile 2 farklı çözümle birden karşılaştım.Biliyorsunuz ki JavaScript multithread bir yapıya sahip değil.Bu nedenle thread managementi yok.Ola ki ekranı 5 saniye kilitlemek istediniz.Bunu yapacak direkt bir komutta yok.Hummm içinizden birileri setTimeout('xyz()',5000); function xyz() {....} dediğini duyar gibiyim.Yalnız burdan dikkat edilmesi gereken bir husus var ki o da setTimeout un okunmasından sonra ilgili komut veya fonksiyon direkt olarak çağrılmıyor sadece kaç saniye sonra fire edilecekse o bilgi alınıp diğer satırdan itibaren yorumlama işlemi devam ediyor.Yöntemlerden ilki bir page vasıtasıyla thread'in yapmak.(asp.net de Thread.Sleep(5000); gibi..)Yani web sunucusunun bulunduğu makinede calisan thread'i manage etmek..Benim pek tavsiye etmediğim bir yontem ama calisir.
Hummm ben bunu neden mi kullanırım , dusunun ki Ajax kullanarak geliştirdiğiniz bir projede sunucu sonucları hemen size gonderiyor olsun ama sizde kullanıcıya işleminiz yapılıyor gibi bir bilgi vermek istediğiniz de bu durumda sunucunun nimetlerinden faydalanıp ilgili thread i bekletebiliriz.. :)
<script>
function IsIE(){
var browser = navigator.appName;
return browser == "Microsoft Internet Explorer";
}
function CreateRequestObject(){
var obj;
if(sahiIsIE()){
obj = new ActiveXObject("Microsoft.XMLHTTP");
}else{
obj = new XMLHttpRequest();
}
return obj;
}
function SendToServer(url){
try{
var http = CreateRequestObject();
var url = url;
http.open("GET", url, false);
http.send(null);
return http.responseText;
}catch(ex){throw ex;}
}
function sleep(ms){
SendToServer("http://localhost:9999/dyn/sleep?ms="+ms);
}
var start = new Date();
sleep(1000);
alert((new Date()) - start);
</script>
---
Bir diğer yontemde ki benim tavsiye ettiğim :)
this.Sleep = function uyku(sure){
sure = sure * 1000;
var sleeping = true;
var now = new Date();
var alarm;
var startingMSeconds = now.getTime();
alert("başlama zamanı : " + startingMSeconds + "\Uyuyacak olduğu süre : " + sure + " ms");
while(sleeping){
alarm = new Date();
alarmMSeconds = alarm.getTime();
if(alarmMSeconds - startingMSeconds > sure){ sleeping = false; }
}
alert('uyannnn :)');
}
iyi çalışmalar.
Eralp