JavaScript, web geliştirme dünyasında önemli bir role sahiptir ve dinamik, etkileşimli web sayfaları oluşturmak için yaygın olarak kullanılmaktadır. Bu dinamizmi sağlamada kullanılan araçlardan biri de zamanlayıcı fonksiyonlardır. Bugün , setInterval ve setTimeout gibi JavaScript zamanlayıcı fonksiyonlarının kullanımını inceleyeceğiz ve nasıl etkili bir şekilde kullanılabileceklerine dair örnekler sunacağız.
Bu fonksiyon belirli bir süre sonra bir kod bloğunu veya fonksiyonu çalıştırmak için kullanılır. Bu, bir uyarı göstermek, bir işlem tamamlandıktan sonra bir sonraki adıma geçmek veya belirli bir süre sonrasında bir işlem gerçekleştirmek gibi senaryolarda kullanılabilir.
Kullanımı oldukça kolaydır. 2 farklı yöntemle kullanabilirsiniz (1. yöntem tavsiye edilir) setTimeout fonksiyonu 2 parametre alır.
ilk parametresi çalışacak fonksiyon . 2 'nci olarak da milisaniye cinsinden süre değeridir. Girilen süre tamamlandığında belirlediğiniz fonksiyon bir kere çalışır. Aşağıdaki örnekde 2 saniye sonra kullanıcıya uyarı gösterilecek bir çalışma yapılmıştır. Örnekte olduğu gibi iki farklı syntax kullanılarak da yazılabilir.
Bu fonksiyon, belirli bir kod bloğunu veya fonksiyonu belirli aralıklarla tekrarlamak için kullanılır. Bu, özellikle animasyonları güncellemek, oyun mekaniğini işlemek veya belirli bir işlemin düzenli olarak gerçekleştirilmesi gibi senaryolarda kullanışlıdır. Syntax'ı setTimeout fonksiyonu ile birebir aynıdır.
clearInterval: setTimeout fonksiyonu ile tekrarlanan işlevi durdurmak için kullanılır. Böylelikle bir işlev yerine getirildikten sonra durdurularak tekrar çalışmasının önüne geçilir
Örnek olarak, kodlarına erişimimizin olmadığı bir web sitesini düşünelim. Sadece GTM gibi üçüncü taraf bir araçla web sitesi içindeki hareketleri takip edebiliyoruz. Bu site içinde kullanıcı "Kod Talep Et" butonuna bastığında bir pop-up açılıyor ve içinde kullanıcıya özel bir hediye çeki kodu bulunuyor. Biz de pop-up'ı gören kullanıcıların e-ticaret davranışlarını takip etmek istiyoruz. Ancak, bu pop-up butona tıklama işlemi gerçekleştikten sonra DOM içinde render ediliyor. (GTM' de bulunan Element Visibility isimli Trigger bu durumda çalışmaz).
Bu durumda ya MutationObserver ya da seteInterval kullanacağız. Konumuz setInterval olduğu için bu yöntemle ilerleyeceğiz.
Aşağıdaki JavaScript kodu, sayfada code_pop_up
sınıfına sahip bir elementi düzenli olarak arar (if bloğunun içi). Eğer bu element sayfada varsa, kod aramayı durdurur.
elementVisible
fonksiyonu her 1.5 saniyede bir çalışır ve code_pop_up
sınıfına sahip bir elementin sayfada olup olmadığını kontrol eder.stopSearchElement
fonksiyonunu çağırır.stopSearchElement
fonksiyonu, elementVisible
fonksiyonunun periyodik çağrılarını durdurur ve "Interval Durduruldu!" mesajını konsola yazdırır.setInterval
ile başlatılır ve element bulununca clearInterval
ile durdurulur.
Performans ve Bellek Kullanımı:
setInterval kullanırken, belirtilen işlevin aralıklar halinde sürekli olarak çalıştırılacağını unutmayın. Bu, özellikle gözlemlenen element sayfada hızlı bir şekilde bulunursa veya sayfa uzun süre açık kalırsa, bellek kullanımı ve performans sorunlarına yol açabilir. Bu nedenle, işlevin gereksiz yere çalışmasını önlemek için clearInterval ile zamanlayıcıyı durdurmak önemlidir.
Anonim fonksiyonlar yerine isimlendirilmiş fonksiyonlar kullanmak (setTimeout ve setInterval içinde), kodun okunabilirliğini ve bakımını kolaylaştırır. Ayrıca, zamanlayıcı ID'lerini yönetmek ve gerektiğinde kolayca erişebilmek için bu ID'leri anlamlı değişken isimleri ile saklamak faydalıdır.
JavaScript'in asenkron doğası nedeniyle, setTimeout ve setInterval tarafından belirlenen zaman aralıkları kesin olmayabilir. Yoğun bir işlem sırasında, belirtilen zaman aralığından daha uzun gecikmeler yaşanabilir. Bu, zamanlama hassasiyeti kritik olan uygulamalar için önemli bir faktördür.
Dinamik olarak yüklenen içerikleri takip etmek için setInterval yerine MutationObserver gibi modern API'ler kullanmak, daha performanslı ve doğru sonuçlar verir. MutationObserver, DOM'daki değişiklikleri verimli bir şekilde takip edebilir ve gereksiz yere tekrar eden işlemleri önler.
JavaScript, web geliştirme dünyasında önemli bir role sahiptir ve dinamik, etkileşimli web sayfaları oluşturmak için yaygın olarak kullanılmaktadır. Bu dinamizmi sağlamada kullanılan araçlardan biri de zamanlayıcı fonksiyonlardır. Bugün , setInterval ve setTimeout gibi JavaScript zamanlayıcı fonksiyonlarının kullanımını inceleyeceğiz ve nasıl etkili bir şekilde kullanılabileceklerine dair örnekler sunacağız.
Bu fonksiyon belirli bir süre sonra bir kod bloğunu veya fonksiyonu çalıştırmak için kullanılır. Bu, bir uyarı göstermek, bir işlem tamamlandıktan sonra bir sonraki adıma geçmek veya belirli bir süre sonrasında bir işlem gerçekleştirmek gibi senaryolarda kullanılabilir.
Kullanımı oldukça kolaydır. 2 farklı yöntemle kullanabilirsiniz (1. yöntem tavsiye edilir) setTimeout fonksiyonu 2 parametre alır.
ilk parametresi çalışacak fonksiyon . 2 'nci olarak da milisaniye cinsinden süre değeridir. Girilen süre tamamlandığında belirlediğiniz fonksiyon bir kere çalışır. Aşağıdaki örnekde 2 saniye sonra kullanıcıya uyarı gösterilecek bir çalışma yapılmıştır. Örnekte olduğu gibi iki farklı syntax kullanılarak da yazılabilir.
Bu fonksiyon, belirli bir kod bloğunu veya fonksiyonu belirli aralıklarla tekrarlamak için kullanılır. Bu, özellikle animasyonları güncellemek, oyun mekaniğini işlemek veya belirli bir işlemin düzenli olarak gerçekleştirilmesi gibi senaryolarda kullanışlıdır. Syntax'ı setTimeout fonksiyonu ile birebir aynıdır.
clearInterval: setTimeout fonksiyonu ile tekrarlanan işlevi durdurmak için kullanılır. Böylelikle bir işlev yerine getirildikten sonra durdurularak tekrar çalışmasının önüne geçilir
Örnek olarak, kodlarına erişimimizin olmadığı bir web sitesini düşünelim. Sadece GTM gibi üçüncü taraf bir araçla web sitesi içindeki hareketleri takip edebiliyoruz. Bu site içinde kullanıcı "Kod Talep Et" butonuna bastığında bir pop-up açılıyor ve içinde kullanıcıya özel bir hediye çeki kodu bulunuyor. Biz de pop-up'ı gören kullanıcıların e-ticaret davranışlarını takip etmek istiyoruz. Ancak, bu pop-up butona tıklama işlemi gerçekleştikten sonra DOM içinde render ediliyor. (GTM' de bulunan Element Visibility isimli Trigger bu durumda çalışmaz).
Bu durumda ya MutationObserver ya da seteInterval kullanacağız. Konumuz setInterval olduğu için bu yöntemle ilerleyeceğiz.
Aşağıdaki JavaScript kodu, sayfada code_pop_up
sınıfına sahip bir elementi düzenli olarak arar (if bloğunun içi). Eğer bu element sayfada varsa, kod aramayı durdurur.
elementVisible
fonksiyonu her 1.5 saniyede bir çalışır ve code_pop_up
sınıfına sahip bir elementin sayfada olup olmadığını kontrol eder.stopSearchElement
fonksiyonunu çağırır.stopSearchElement
fonksiyonu, elementVisible
fonksiyonunun periyodik çağrılarını durdurur ve "Interval Durduruldu!" mesajını konsola yazdırır.setInterval
ile başlatılır ve element bulununca clearInterval
ile durdurulur.
Performans ve Bellek Kullanımı:
setInterval kullanırken, belirtilen işlevin aralıklar halinde sürekli olarak çalıştırılacağını unutmayın. Bu, özellikle gözlemlenen element sayfada hızlı bir şekilde bulunursa veya sayfa uzun süre açık kalırsa, bellek kullanımı ve performans sorunlarına yol açabilir. Bu nedenle, işlevin gereksiz yere çalışmasını önlemek için clearInterval ile zamanlayıcıyı durdurmak önemlidir.
Anonim fonksiyonlar yerine isimlendirilmiş fonksiyonlar kullanmak (setTimeout ve setInterval içinde), kodun okunabilirliğini ve bakımını kolaylaştırır. Ayrıca, zamanlayıcı ID'lerini yönetmek ve gerektiğinde kolayca erişebilmek için bu ID'leri anlamlı değişken isimleri ile saklamak faydalıdır.
JavaScript'in asenkron doğası nedeniyle, setTimeout ve setInterval tarafından belirlenen zaman aralıkları kesin olmayabilir. Yoğun bir işlem sırasında, belirtilen zaman aralığından daha uzun gecikmeler yaşanabilir. Bu, zamanlama hassasiyeti kritik olan uygulamalar için önemli bir faktördür.
Dinamik olarak yüklenen içerikleri takip etmek için setInterval yerine MutationObserver gibi modern API'ler kullanmak, daha performanslı ve doğru sonuçlar verir. MutationObserver, DOM'daki değişiklikleri verimli bir şekilde takip edebilir ve gereksiz yere tekrar eden işlemleri önler.
Son güncellenme: 18/12/2023
Sevgili ziyaretçimiz, lütfen digital.3gen.com.tr web sitemizi ziyaret etmeden önce işbu kullanım koşulları sözleşmesini dikkatlice okuyunuz. Siteye erişiminiz tamamen bu sözleşmeyi kabulünüze ve bu sözleşme ile belirlenen şartlara uymanıza bağlıdır. Şayet bu sözleşmede yazan herhangi bir koşulu kabul etmiyorsanız, lütfen siteye erişiminizi sonlandırınız. Siteye erişiminizi sürdürdüğünüz takdirde, koşulsuz ve kısıtlamasız olarak, işbu sözleşme metninin tamamını kabul ettiğinizin, tarafımızca varsayılacağını lütfen unutmayınız.
digital.3gen.com.tr web sitesi Şirket Adı tarafından yönetilmekte olup, bundan sonra 3GEN Dijital olarak anılacaktır. İşbu siteye ilişkin Kullanım Koşulları, yayınlanmakla yürürlüğe girer. Değişiklik yapma hakkı, tek taraflı olarak 3GEN Dijital'e aittir ve digital.3gen.com.tr üzerinden güncel olarak paylaşılacak olan bu değişiklikleri, tüm kullanıcılarımız baştan kabul etmiş sayılır.
Gizlilik, ayrı bir sayfada, kişisel verilerinizin tarafımızca işlenmesinin esaslarını düzenlemek üzere mevcuttur. digital.3gen.com.tr'yi kullandığınız takdirde, bu verilerin işlenmesinin gizlilik politikasına uygun olarak gerçekleştiğini kabul edersiniz.
Şirket Adı olarak, sunacağımız hizmetlerin kapsamını ve niteliğini, yasalar çerçevesinde belirlemekte tamamen serbest olup; hizmetlere ilişkin yapacağımız değişiklikler, digital.3gen.com.tr'de yayınlanmakla yürürlüğe girmiş sayılacaktır.
digital.3gen.com.tr'de yayınlanan tüm metin, kod, grafikler, logolar, resimler, ses dosyaları ve kullanılan yazılımın sahibi (bundan böyle ve daha sonra "içerik" olarak anılacaktır) Şirket Adı olup, tüm hakları saklıdır. Yazılı izin olmaksızın site içeriğinin çoğaltılması veya kopyalanması kesinlikle yasaktır.
Kullanıcıların tamamı, digital.3gen.com.tr'yi yalnızca hukuka uygun ve şahsi amaçlarla kullanacaklarını ve üçüncü kişinin haklarına tecavüz teşkil edecek nitelikteki herhangi bir faaliyette bulunmayacağını taahhüt eder. digital.3gen.com.tr dâhilinde yaptıkları işlem ve eylemlerindeki, hukuki ve cezai sorumlulukları kendilerine aittir. İşbu iş ve eylemler sebebiyle, üçüncü kişilerin uğradıkları veya uğrayabilecekleri zararlardan dolayı digital.3gen.com.tr ‘nin doğrudan ve/veya dolaylı hiçbir sorumluluğu yoktur.
digital.3gen.com.tr'de mevcut bilgilerin doğruluk ve güncelliğini sağlamak için elimizden geleni yapmaktayız. Lakin gösterdiğimiz çabaya rağmen, bu bilgiler, fiili değişikliklerin gerisinde kalabilir, birtakım farklılıklar olabilir. Bu sebeple, site içerisinde yer alan bilgilerin doğruluğu ve güncelliği ile ilgili tarafımızca, açık veya zımni, herhangi bir garanti verilmemekte, hiçbir taahhütte bulunulmamaktadır.
digital.3gen.com.tr'de üçüncü şahıslar tarafından işletilen ve içerikleri tarafımızca bilinmeyen diğer web sitelerine, uygulamalara ve platformlara köprüler (hyperlink) bulunabilir. digital.3gen.com.tr, işlevsellik yalnızca bu sitelere ulaşımı sağlamakta olup, içerikleri ile ilgili hiçbir sorumluluk kabul etmemekteyiz.
digital.3gen.com.tr'yi virüslerden temizlenmiş tutmak konusunda elimizden geleni yapsak da, virüslerin tamamen bulunmadığı garantisini vermemekteyiz. Bu nedenle veri indirirken, virüslere karşı gerekli önlemi almak, kullanıcıların sorumluluğundadır. Virüs vb. kötü amaçlı programlar, kodlar veya materyallerin sebep olabileceği zararlardan dolayı sorumluluk kabul etmemekteyiz.
digital.3gen.com.tr'de sunulan hizmetlerde, kusur veya hata olmayacağına ya da kesintisiz hizmet verileceğine dair garanti vermemekteyiz. digital.3gen.com.tr'ye ve sitenin hizmetlerine veya herhangi bir bölümüne olan erişiminizi önceden bildirmeksizin herhangi bir zamanda sonlandırabiliriz.
digital.3gen.com.tr'nin kullanımından doğan zararlara ilişkin sorumluluğumuz, kast ve ağır ihmal ile sınırlıdır. Sözleşmenin ihlalinden doğan zararlarda, talep edilebilecek toplam tazminat, öngörülebilir hasarlar ile sınırlıdır. Yukarıda bahsedilen sorumluluk sınırlamaları aynı zamanda insan hayatına, bedeni yaralanmaya veya bir kişinin sağlığına gelebilecek zararlar durumunda geçerli değildir. Hukuken mücbir sebep sayılan tüm durumlarda, gecikme, ifa etmeme veya temerrütten dolayı, herhangi bir tazminat yükümlülüğümüz doğmayacaktır.
digital.3gen.com'da, kişisel bilgilerinizin gizliliğini ve güvenliğini korumayı taahhüt ediyoruz. Bu Gizlilik Politikası, web sitemizi ziyaret ettiğinizde ve GA4 Analiz Aracı da dahil olmak üzere dijital büyüme hizmetlerimizi (bundan sonra "Hizmetler" olarak anılacaktır) kullandığınızda bize sağladığınız bilgileri nasıl topladığımızı, kullandığımızı ve ifşa ettiğimizi açıklamaktadır. Hizmetlerimizi kullanarak, kişisel bilgilerinizin bu Gizlilik Politikasında açıklandığı şekilde toplanmasına, kullanılmasına ve ifşa edilmesine izin vermiş olursunuz.
1.1 Kişisel Bilgiler: Hizmetlerimizi kullandığınızda, adınız, e-posta adresiniz, iletişim bilgileriniz ve vermeyi seçtiğiniz diğer bilgiler gibi bize gönüllü olarak sağladığınız kişisel bilgileri toplayabiliriz.
1.2 Kullanım ve Analiz Bilgileri: Web sitemizi ziyaret ettiğinizde IP adresiniz, tarayıcı türünüz, işletim sisteminiz, yönlendiren URL'ler, ziyaret edilen sayfalar ve ziyaretlerinizin tarihleri/zamanları gibi belirli bilgileri otomatik olarak toplayabiliriz. Ayrıca, ziyaretçi sayısı, görüntülenen sayfalar ve gezinme modelleri dahil ancak bunlarla sınırlı olmamak üzere Hizmetlerimizin kullanımı hakkında toplu bilgiler de toplayabiliriz. Bu bilgiler, Hizmetlerimizin performansını ve işlevselliğini analiz etmemize ve geliştirmemize yardımcı olur.
1.3 Çerezler ve Benzer Teknolojiler: Tarama faaliyetleriniz hakkında bilgi toplamak ve kullanıcı deneyiminizi geliştirmek için çerezleri ve benzer teknolojileri (ör. web işaretçileri, pikseller) kullanabiliriz. Çerez tercihlerinizi tarayıcı ayarlarınızdan yönetebilirsiniz. Çerezleri devre dışı bırakırsanız, Hizmetlerimizin bazı özelliklerinin düzgün çalışmayabileceğini lütfen unutmayın.
2.1 Hizmetleri Sağlamak ve Geliştirmek: Topladığımız bilgileri, deneyiminizi özelleştirmek ve geliştirmek, kullanıcı tercihlerini analiz etmek ve web sitemizin performansını optimize etmek dahil olmak üzere Hizmetlerimizi sağlamak ve geliştirmek için kullanabiliriz. Bilgilerinizi sizinle iletişim kurmak, sorulara yanıt vermek ve size Hizmetlerle ilgili önemli güncellemeler veya idari bilgiler göndermek için de kullanabiliriz.
2.2 GA4 Mülk Denetim Aracı: GA4 Mülk Denetim Aracımızı kullanırsanız, mülk kimliğiniz ve yapılandırma ayarlarınız gibi Google Analytics 4 (GA4) mülkünüzle ilgili bilgileri toplayabiliriz. Bu bilgiler yalnızca denetimi yürütmek ve GA4 uygulamanızı optimize etmek için size ilgili öneriler ve içgörüler sağlamak amacıyla kullanılır.
2.3 Pazarlama ve Promosyon İletişimleri: İzninizle, iletişim bilgilerinizi size Hizmetlerimiz veya ilgili ürün ve hizmetler hakkında promosyon malzemeleri, haber bültenleri veya diğer iletişimleri göndermek için kullanabiliriz. İletişimde verilen talimatları izleyerek veya doğrudan bizimle iletişime geçerek istediğiniz zaman bu iletişimleri almaktan vazgeçebilirsiniz.
3.1 Üçüncü Taraf Hizmet Sağlayıcıları: Hizmetlerimizin sunulmasında ve geliştirilmesinde bize yardımcı olmaları için güvenilir üçüncü taraf hizmet sağlayıcıları ile çalışabiliriz. Bu hizmet sağlayıcılar, kişisel bilgilerinize yalnızca bizim adımıza işlevlerini yerine getirmek amacıyla erişebilir ve bunları başka herhangi bir amaçla ifşa etmemek veya kullanmamakla yükümlüdür.
3.2 Yasalara ve Yasal Taleplere Uygunluk: Bilgilerinizi yürürlükteki yasalara, yönetmeliklere, yasal süreçlere veya resmi taleplere uymak için ifşa edebiliriz. Ayrıca haklarımızı uygulayabilir, mülkümüzü veya güvenliğimizi ya da başkalarının haklarını, mülkünü veya güvenliğini koruyabiliriz.
3.3 İş Transferleri: 3GEN diijital bir birleşme, satın alma veya varlıklarının tamamının veya bir kısmının satışına dahil olursa, bilgileriniz bu işlemin bir parçası olarak aktarılabilir. Kişisel bilgilerinizin mülkiyeti veya kontrolündeki bu tür herhangi bir değişiklik hakkında sizi e-posta ve/veya web sitemizde göze çarpan bir bildirim yoluyla bilgilendireceğiz.
Kişisel bilgilerinizin güvenliğini korumak ve yetkisiz erişim, kullanım veya ifşayı önlemek için uygun teknik ve organizasyonel önlemleri uyguluyoruz. Bununla birlikte, İnternet üzerinden hiçbir iletim yönteminin veya elektronik depolamanın %100 güvenli olmadığını ve mutlak güvenliği garanti edemeyeceğimizi lütfen unutmayın.
Web sitemiz, 3GEN dijital tarafından sahip olunmayan veya kontrol edilmeyen üçüncü taraf web sitelerine veya hizmetlerine bağlantılar içerebilir. Bu Gizlilik Politikası yalnızca web sitemiz için geçerlidir ve üçüncü taraf web sitelerinin gizlilik uygulamalarından veya içeriğinden sorumlu değiliz. Ziyaret ettiğiniz tüm üçüncü taraf web sitelerinin veya hizmetlerinin gizlilik politikalarını incelemenizi öneririz.
Hizmetlerimiz 16 yaşın altındaki bireyler için tasarlanmamıştır. Çocuklardan bilerek kişisel bilgi toplamıyoruz. Ebeveyn veya veli iseniz ve çocuğunuzun bize kişisel bilgiler verdiğini düşünüyorsanız, lütfen bizimle iletişime geçin; bu bilgileri sistemlerimizden silmek için gerekli adımları atacağız.
Bu Gizlilik Politikasını zaman zaman güncelleyebiliriz ve güncellenmiş sürüm, yürürlük tarihi ile birlikte web sitemizde yayınlanacaktır. Herhangi bir değişiklik için bu Gizlilik Politikasını periyodik olarak gözden geçirmenizi öneririz. Gizlilik Politikasında yapılan herhangi bir değişiklikten sonra Hizmetlerimizi kullanmaya devam etmeniz, değişiklikleri kabul ettiğiniz ve güncellenmiş Gizlilik Politikasına uymaya ve bağlı kalmaya onay verdiğiniz anlamına gelecektir.
Bu Gizlilik Politikası veya gizlilik uygulamalarımızla ilgili herhangi bir sorunuz, endişeniz veya öneriniz varsa, lütfen bizimle iletişime geçin.