HTML Web Workers API
وب ورکِرز چیست؟
وب ورکِرز به شما اجازه میدهند جاوااسکریپت را در رشتههای پسزمینه (background threads) اجرا کنید، جدا از رشته اصلی رابط کاربری (main UI thread). این کار باعث میشود وظایف سنگین یا طولانی بدون مسدود کردن رابط کاربری انجام شوند و صفحه کند نشود.
چرا از وب ورکِرز استفاده کنیم؟
-
جلوگیری از قفل شدن رابط کاربری: وقتی کد طولانی در رشته اصلی اجرا شود، صفحه گیر میکند و کاربر نمیتواند با آن تعامل داشته باشد.
-
بهبود عملکرد: رشتههای پسزمینه میتوانند کارهای سنگین را همزمان انجام دهند.
-
تجربه بهتر برای کاربر: انیمیشنها و کلیکها بدون لگ و روان اجرا میشوند.
چگونه کار میکند؟
-
رشته اصلی یک ورکر میسازد که یک فایل جاوااسکریپت جداگانه است.
-
ورکر در پسزمینه و مستقل اجرا میشود.
-
ارتباط بین رشته اصلی و ورکر از طریق ارسال پیام (message passing) با متدهای
postMessage()و شنیدنonmessageانجام میشود.
مثال ساده
main.js:
// گوش دادن به پیامهای رشته اصلی
onmessage = function(e) {
console.log(‘پیام از رشته اصلی:’, e.data);
// انجام یک کار (مثلا برعکس کردن رشته)
const result = e.data.split( ‘ ‘ ).reverse().join(‘ ‘);
// ارسال نتیجه به رشته اصلی
postMessage(result);
};
نکات مهم
-
ورکرها نمیتوانند مستقیماً به DOM دسترسی داشته باشند.
-
آنها دارای زمینهی اجرایی جدا هستند (global context) که به جای
windowازselfاستفاده میکند. -
ارتباط همیشه به صورت غیرهمزمان (asynchronous) و با استفاده از
postMessageانجام میشود. -
دو نوع ورکر وجود دارد: ورکرهای اختصاصی (Dedicated Workers) و ورکرهای مشترک (Shared Workers).
کی از وب ورکِرز استفاده کنیم؟
-
محاسبات سنگین (پردازش داده، ویرایش تصویر)
-
واکشی داده در پسزمینه
-
انجام محاسبات لحظهای (real-time)
-
هر کاری که ممکن است رشته اصلی را مسدود کند
دیدگاهتان را بنویسید