tamamlamadan önce.
<!DOCTYPE html>
<script>
var worker = new Worker('worker.js');
worker.postMessage({ task: 1, iterations: 100 }); // very slow task
worker.postMessage({ task: 2, iterations: 1 }); // very quick task
worker.onmessage = function(event) {
console.log(event.data);
};
</script>
worker.js:
self.onmessage = function(event) {
for (var i = 0; i < event.data.iterations * 1000 * 1000 * 10; i++) {};
self.postMessage("Finished task " + event.data.task);
}
Çıkışı: Aşağıdaki örneği deneyin
Finished task 1
Finished task 2
görevler hep, sırayla hızlı bir sonra yani ilk yavaş birini tamamladığınızda . (Görev paralel olarak yürütüldüyse, ikinci görev ilk önce net bir kenar boşluğuyla sonlanır.)
(Sadece açık olmak gerekirse: postMessage öğesini çağırmak her zaman yürütme bağlamında engeller (herhangi bir işlev çağrısı olarak) ancak hemen "hemen döndürür" ", iletinin kendisini çok hızlı bir şekilde göndermesi nedeniyle. Bu, muhtemelen sizin sorduğunuz şey değil.)
Not: Worker.js'yi yerel diskten yüklemeye çalışırsanız, Chrome bir güvenlik istisnası atar, Safari & Firefox'ta çalışır.
İşçiniz hangi görevi gerçekleştiriyor? Hesaplama? Ajax? –