Turning gears are the logo of co-scripts

Çoğu uygulamada belirli işler belirli zaman aralıklarında yapılır ve kontrol döngüleriyle bu kontrol edilir. Bu iş hepimizin bildiği iki zamanlama metodu ile yapılır. setTimeout ve setInterval neredeyse birbirine denk iki metodtur. En temel farkları ise setTimeout'un kendisinden istenen işi verilen süre sonra ve 1 kez yapmasıdır. setInterval ise aynı parametrelerle çalışmasına rağmen iptal edilinceye kadar verilen işi verilen süre aralıklarında yapmaya devam eder. Bu metodlar bir değişkene atanarak oluşturulurlarsa değişkeni clearTimeout ve clearInterval ile silerek yoketmek böylece döngüyü engellemek mümkündür.

Buraya kadar son derece faydalı iki kullanılış, ancak yapmaları istenen işe değişebilir değerlerde parametre göndermeleri gerektiğinde 2 temel sorun ortaya çıkıyor. Birincisi browser temelli işaretleme farklılıkları, ikincisi de durudurulmaları gereken şartı kontrol eden döngünün bypass olabilmesi.

Eğer zamanlama ile çağırdığınız kod grubu veya fonksiyonun değişen değerlerle parametre almasını denediyseniz hikayenin buraya kadarını zaten biliyorsunuz. Çözümlerden bir veya bir kaçına da ulaşmışsınızdır.

Burada nihayi çözüme ulaşamadığım (crossbrowser) için kısaca parametre gönderdiğim fonksiyonu doğrudan zamanlama metodunun içine alıyorum, gereken parametreleri de burada rahatça kullanaibliyorum. Önümüzdeki günlerde buna kesin çözümü içeren bir kod bloğunu daha yazacağım.

İnternetteki çözümlerden bazısında yardımcı ir delay fonksiyonu kullanılmış. Ayrıca çift tırnak ve tek tırmak atraksiyonları da browserlara göre yapılarak crossbrowser yolunda çözüm üretilmeye çalışılmış.

 

Benim şimdilik uyguladığım çözüm şu şekilde:

var zamanlayici = setInterval(function(){
// istediğimiz parameterlerin kullanımı
// clearInterval(zamanlayici); //kontrolümüz yeterliyse
return;
},belirliSure);

Not: Burada parametre pass edilmiyor. Edilmesi gereken fonksiyon getirilip doğrudan kullanılıyor.

co-scripts tag image settimeoutsetintervalsend parametersparameterspass argumentsparametretimingtimerzamanlayiciclearintervalcleartimeout
ID:233 | Okunma:1719