Web Workers API
در جاوااسکریپت به صورت پیشفرض همه کدها روی main thread (رشته اصلی) اجرا میشوند.
اگر کاری سنگین (مثل پردازش داده یا محاسبات زیاد) انجام شود، مرورگر ممکن است کند شود یا حتی برای مدتی پاسخگو نباشد.
📌 برای حل این مشکل، از Web Workers استفاده میکنیم.
Web Worker یک اسکریپت جداگانه است که در پسزمینه اجرا میشود و بدون اینکه UI صفحه را مختل کند، وظایف سنگین را انجام میدهد.
🔹 1. ایجاد یک Worker
ابتدا باید یک فایل جاوااسکریپت جدا بسازیم.
worker.js
main.js
🔹 2. متوقف کردن Worker
📌 بعد از متوقف شدن، Worker دیگر قابل استفاده نیست.
🔹 3. ویژگیهای Web Workers
-
در رشته جداگانه (background thread) اجرا میشوند.
-
به DOM دسترسی مستقیم ندارند.
-
میتوانند با postMessage داده بفرستند و بگیرند.
-
برای کارهای سنگین مثل محاسبات ریاضی، پردازش تصویر، مدیریت دادههای بزرگ مناسب هستند.
🔹 4. انواع Workers
-
Dedicated Workers → مخصوص یک صفحه خاص (پراستفادهترین)
-
Shared Workers → قابل استفاده بین چند صفحه یا تب مختلف
-
Service Workers → برای مدیریت کش، آفلاین شدن اپلیکیشن و نوتیفیکیشنها
🔹 5. مثال کاربردی
محاسبه اعداد بزرگ بدون کند شدن UI:
worker.js
main.js
✅ خلاصه
-
Web Workers → اجرای کد در پسزمینه بدون کند شدن صفحه
-
متدها:
-
new Worker("file.js")
→ ساخت Worker -
()postMessage
→ ارسال پیام -
onmessage
→ دریافت پیام -
()terminate
→ توقف Worker
-
-
انواع: Dedicated, Shared, Service Workers