HTML ویب ورکرس

ویب ورکر پیچھے چلنے والا جاوا اسکریپٹ ہے، جو پیج کی کارکردگی پر اثر نہیں دیتا.

ویب ورکر کیا ہے؟

جب پیج میں اسکریپٹ چل رہا ہے تو پیج جواب دہی نہیں دیتا جاسکتا، جب تک اسکریپٹ مکمل نہیں ہوتا.

ویب ورکرس جو پیچھے چلتی ہیں، دوسرے اسکریپٹس سے مستقل ہیں، اور پیج کی کارکردگی پر اثر نہیں دیتے ہیں۔ آپ کسی چاہئیں کیوں بھی نہیں کرسکتے: کلک کرسکتے، مطلب چننا وغیرہ، اس وقت ویب ورکر پیچھے چل رہا ہوگا。

براوزر پشتیبانی

جداول میں شمارا تامل کا پہلا براوزر ورکر پشتیبانی کرتا ہے کا نشان دہی کرتا ہے。

ای پی آئی
ویب ورکر 4.0 10.0 3.5 4.0 11.5

HTML ویب ورکرس مثال

درج ذیل مثال ایک سادے ویب ورکر بناتا ہے، پیچھے میں شمارش کرتا ہے:

شمارش:

خود کا تجربہ کریں

ویب ورکر پشتیبانی جانچنا

ویب ورکر بنانے سے پہلے، آپ کا براوزر اس کا پشتیبانی کرتا ہے یا نہیں جانچنے:

if (typeof(Worker) !== "undefined") {
    // بله! ویب ورکر پشتیبانی کرتا ہے!
    // کچھ کوڈ.....
}
    // معذرت، ویب ورکر پشتیبانی نکرده!
}

ایک ویب ورکر فایل بنانے

اب، ہم اپنے وارکر کا ایک باہری جاوا اسکریپت فائل میں بنائیں.

یہاں، ہم اپنا شمارش اسکریپت بناتے ہیں جو "demo_workers.js" فائل میں ذخیرہ کیا جائے گا:

var i = 0;
function timedCount() {
    i = i + 1;
    postMessage(i);
    setTimeout("timedCount()",500);
}
timedCount();

مذکورہ بالا کد میں اہم حصہ postMessage() میئتھد ہے - یہ کد کا استعمال کیا جاتا ہے تاکہ پیغام کو HTML پیج کو بھیج سکتا ہم.

نوٹ: وارکر عام طور پر ایسے سادے اسکریپت میں نہیں استعمال کی جاتا، بلکہ یہ بھیجی جانے والی CPU وسائل پر زیادہ استعمال کے کاموں میں استعمال کی جاتا ہے.

Web Worker آٹھارا بنائیں

اب ہم وارکر فائل رکھ چکے ہیں، اب ہم اس کو HTML پیج سے بلا دیں چاہیئے.

ینجا کا کد میں اہم حصہ postMessage() میئتھد ہے - یہ کد کا استعمال کیا جاتا ہے تاکہ پیغام کو HTML پیج کو بھیج سکتا ہم.

if (typeof(w) == "undefined") {
    w = نئی ویک وارک("demo_workers.js");
}

اب ساتھی کا پیغام وارکر سے بھیج سکتا ہم اور اس سے پیغام قبول کرسکتا ہم.

وارکر میں ایک "onmessage" ایونٹ لیستنر جوڑیں:

w.onmessage = function(event){
    دکومنٹ.getElementById("result").innerHTML = ایونٹ.data;
};

وارکر پیغام بھیجتے ہوئے، وارکر کا اسکریپت میں کا کد چلے گا۔ وارکر کا ڈاٹا event.data میں ذخیرہ کیا جائے گا.

Web Worker کو ختم کریں

اب وارکر کا قیام ہونے کے بعد، یہ پیغاموں کو سنتا رہے گا (حتی اگر باہری اسکریپت مکمل ہو چکا ہو) تاکہ اس کا ختم نہ ہو جائے.

اگر آپ چاہتے ہیں کہ web worker کو ختم کریں اور براوزر/کمپیوٹر کے وسائل کو آزاد کریں، terminate() می�تھد کا استعمال کریں:

w.terminate();

Web Worker کا دوبارہ استعمال

اگر آپ وارکر متغیر کو undefined مقرر کریں، اس کے ختم ہونے کے بعد، اس کو دوبارہ استعمال کریں:

w = undefined;

کاملی کا Web Worker مثال کد

ہم .js فائل میں وارکر کو دیکھ چکے ہیں۔ اب ساتھی کا کد HTML پیج کا کد:

مثال

<!DOCTYPE html>
<html>
<body>
<p>شماروں را شمارش کریں: <output id="result"></output></p>
<بٹن onclick="startWorker()">ایوبجیکٹ شروع کریں</بٹن> 
<بٹن onclick="stopWorker()">ایوبجیکٹ متوقف کریں</بٹن>
<br><br>
<script>
ویر w;
فنکشن startWorker() {
    اگر typeof(Worker) != "undefined" {
        اگر typeof(w) == "undefined" {
            w = نئی ویک وارک("demo_workers.js");
        }
        w.onmessage = فنکشن(ایونٹ) {
            دکومنٹ.getElementById("result").innerHTML = ایونٹ.data;
        };
    }
        دکومنٹ.getElementById("result").innerHTML = "مجبور آپ کے لئے! کبھی ویک وارک سپورٹ نہیں.";
    }
}
فنکشن stopWorker() { 
    w.terminate();
    w = undefined;
}
</script>
</body>
</html>

خود کا تجربہ کریں

Web Worker اور DOM

علمی کارگر ایوبجیکٹ، دوسرے فائل میں واقع ہونے کی وجہ سے، وہ درج ذیل جاوا اسکریپٹ اوبجیکٹوں تک رسائی نہیں کر سکتا:

  • ویندو اوبجیکٹ
  • دکومنٹ اوبجیکٹ
  • پارنٹ اوبجیکٹ