JS Eğitimi

ANA SAYFA JS Giriş JS Nereye JS Çıktı JS İfadeleri JS Sözdizimi JS Yorumları JS Değişkenleri JS Let JS Sabiti JS Operatörleri JS Aritmetiği JS Ataması JS Veri Türleri JS Fonksiyonları JS Nesneleri JS Etkinlikleri JS Dizeleri JS Dize Yöntemleri JS Dizisi Arama JS Dize Şablonları JS Numaraları JS Numarası Yöntemleri JS Dizileri JS Dizi Yöntemleri JS Dizi Sıralaması JS Dizi Yineleme JS Dizi Sabiti JS Tarihleri JS Tarih Formatları JS Tarih Alma Yöntemleri JS Tarih Ayar Yöntemleri JS Matematik JS Rastgele JS Booleanları JS Karşılaştırmaları JS Koşulları JS Anahtarı JS Döngüsü İçin JS Döngüsü İçin JS Döngüsü JS Döngüsü JS Arası JS Yinelenebilirler JS Setleri JS Haritaları JS Türü JS Tipi Dönüşüm JS Bitsel JS Normal İfade JS Hataları JS Kapsamı JS Kaldırma JS Sıkı Modu Bu Anahtar Kelimeyi JS JS Ok İşlevi JS Sınıfları JS JSON JS Hata Ayıklama JS Stil Kılavuzu JS En İyi Uygulamaları JS Hataları JS Performansı JS Ayrılmış Kelimeler

JS Sürümleri

JS Sürümleri JS 2009 (ES5) JS 2015 (ES6) JS 2016 JS 2017 JS 2018 JS IE / Kenar JS Geçmişi

JS Nesneleri

Nesne Tanımları Nesne Özellikleri Nesne Yöntemleri Nesne Görüntüleme Nesne Erişimcileri Nesne Oluşturucuları Nesne Prototipleri Nesne Yinelenebilirler Nesne Kümeleri Nesne Haritaları Nesne Referansı

JS Fonksiyonları

Fonksiyon Tanımları Fonksiyon Parametreleri Fonksiyon Çağırma İşlev Çağrısı İşlev Uygula Fonksiyon Kapanışları

JS Sınıfları

Sınıf Tanıtımı Sınıf Kalıtımı Sınıf Statik

JS Zaman uyumsuz

JS Geri Aramaları JS Asenkron JS Sözleri JS Zaman uyumsuz/Bekliyor

JS HTML DOM'si

DOM Tanıtımı DOM Yöntemleri DOM Belgesi DOM Öğeleri DOM HTML'si DOM Formları DOM CSS'si DOM Animasyonları DOM Olayları DOM Olay Dinleyicisi DOM Gezinme DOM Düğümleri DOM Koleksiyonları DOM Düğüm Listeleri

JS Tarayıcı Malzeme Listesi

JS Penceresi JS Ekranı JS Konumu JS Geçmişi JS Navigatörü JS Açılır Pencere Uyarısı JS Zamanlaması JS Çerezleri

JS Web API'leri

Web API'sine Giriş Web Formları API'sı Web Geçmişi API'si Web Depolama API'sı Web Çalışanı API'si Web Getirme API'sı Web Coğrafi Konum API'sı

JS AJAX

AJAX'a Giriş AJAX XMLHttp AJAX İsteği AJAX Yanıtı AJAX XML Dosyası AJAX PHP AJAX ASP AJAX Veritabanı AJAX Uygulamaları AJAX Örnekleri

JS JSON

JSON'a Giriş JSON Sözdizimi JSON'a karşı XML JSON Veri Türleri JSON Ayrıştırma JSON Stringify JSON Nesneleri JSON Dizileri JSON Sunucusu JSON PHP JSON HTML'si JSON JSONP

JS ve jQuery

jQuery Seçiciler jQuery HTML'si jQuery CSS'si jQuery DOM'si

JS Grafikleri

JS Grafikleri JS Tuval JS Konusu JS Chart.js JS Google Grafiği JS D3.js

JS Örnekleri

JS Örnekleri JS HTML DOM'si JS HTML Girişi JS HTML Nesneleri JS HTML Olayları JS Tarayıcı JS Editörü JS Alıştırmaları JS Testi JS Sertifikası

JS Referansları

JavaScript Nesneleri HTML DOM Nesneleri


Web Çalışanları API'sı


Web çalışanı, sayfanın performansını etkilemeden arka planda çalışan bir JavaScript'tir.


Web Çalışanı nedir?

Bir HTML sayfasında komut dosyaları yürütülürken, komut dosyası tamamlanana kadar sayfa yanıt vermemeye başlar.

Web çalışanı, sayfanın performansını etkilemeden diğer komut dosyalarından bağımsız olarak arka planda çalışan bir JavaScript'tir. Web işçisi arka planda çalışırken, istediğinizi yapmaya devam edebilirsiniz: tıklama, bir şeyler seçme, vb.

Tarayıcı Desteği

Tablodaki sayılar, Web Çalışanlarını tam olarak destekleyen ilk tarayıcı sürümlerini belirtir:

Chrome 4 IE 10 Firefox 3.5 Safari 4 Opera 11.5
Jan 2010 Sep 2012 Jun 2009 Jun 2009 Jun 2011

Web Çalışanları Örneği

Aşağıdaki örnek, arka planda sayıları sayan basit bir web çalışanı oluşturur:

Örnek

Count numbers:


Web Çalışanı Desteğini Kontrol Edin

Bir web çalışanı oluşturmadan önce, kullanıcının tarayıcısının bunu destekleyip desteklemediğini kontrol edin:

if (typeof(Worker) !== "undefined") {
  // Yes! Web worker support!
  // Some code.....
} else {
  // Sorry! No Web Worker support..
}


Bir Web Çalışanı Dosyası Oluşturun

Şimdi, web çalışanımızı harici bir JavaScript'te oluşturalım.

Burada, sayan bir komut dosyası oluşturuyoruz. Komut dosyası "demo_workers.js" dosyasında saklanır:

let i = 0;

function timedCount() {
  i ++;
  postMessage(i);
  setTimeout("timedCount()",500);
}

timedCount();

Yukarıdaki kodun önemli kısmı postMessage(), HTML sayfasına bir mesaj göndermek için kullanılan yöntemdir.

Not: Normalde web çalışanları bu tür basit komut dosyaları için değil, daha fazla CPU yoğun görev için kullanılır.


Bir Web Çalışanı Nesnesi Oluşturun

Artık web işçi dosyasına sahip olduğumuza göre, onu bir HTML sayfasından çağırmamız gerekiyor.

Aşağıdaki satırlar, çalışanın zaten var olup olmadığını kontrol eder, değilse - yeni bir web çalışanı nesnesi oluşturur ve kodu "demo_workers.js" içinde çalıştırır:

if (typeof(w) == "undefined") {
  w = new Worker("demo_workers.js");
}

Ardından web çalışanından mesaj gönderip alabiliriz.

Web çalışanına bir "onmessage" olay dinleyicisi ekleyin.

w.onmessage = function(event){
  document.getElementById("result").innerHTML = event.data;
};

Web çalışanı bir mesaj gönderdiğinde, olay dinleyicisindeki kod yürütülür. Web çalışanından alınan veriler, event.data'da saklanır.


Bir Web Çalışanını Sonlandırma

Bir web işçisi nesnesi oluşturulduğunda, sonlandırılana kadar (harici komut dosyası tamamlandıktan sonra bile) mesajları dinlemeye devam edecektir.

Bir web çalışanını ve ücretsiz tarayıcı/bilgisayar kaynaklarını sonlandırmak için şu terminate()yöntemi kullanın:

w.terminate();

Web Çalışanını Yeniden Kullanın

Çalışan değişkeni tanımsız olarak ayarlarsanız, sonlandırıldıktan sonra kodu yeniden kullanabilirsiniz:

w = undefined;

Tam Web Çalışanı Örnek Kodu

Worker kodunu .js dosyasında zaten görmüştük. HTML sayfasının kodu aşağıdadır:

Örnek

<!DOCTYPE html>
<html>
<body>

<p>Count numbers: <output id="result"></output></p>
<button onclick="startWorker()">Start Worker</button>
<button onclick="stopWorker()">Stop Worker</button>

<script>
let w;

function startWorker() {
  if (typeof(w) == "undefined") {
    w = new Worker("demo_workers.js");
  }
  w.onmessage = function(event) {
    document.getElementById("result").innerHTML = event.data;
  };
}

function stopWorker() {
  w.terminate();
  w = undefined;
}
</script>

</body>
</html>

Web Çalışanları ve DOM

Web çalışanları harici dosyalarda olduğundan, aşağıdaki JavaScript nesnelerine erişimleri yoktur:

  • pencere nesnesi
  • belge nesnesi
  • ana nesne