Sobes.tech
Middle

Веб Воркерҳо чистанд ва барои чӣ лозиманд?

sobes.tech AI

Ҷавоб аз AI

Web Workers מאפשרים לבצע פעולות תובעניות במשאבים בשרשורים רקע, מבלי לחסום את הזרם הראשי של ביצוע JavaScript, שאחראי על רינדור ממשק המשתמש. זה מונע תקיעות של הדף ומשפר את תגובת היישום, במיוחד בעבודה עם כמויות גדולות של נתונים, חישובים או בקשות רשת.

סוגי ה-Worker העיקריים:

  • Worker ייעודי: נוצר באמצעות new Worker('worker.js'). עובד רק עם הדף שיצר אותו ומנוהל ישירות מסקריפט של דף זה.
  • Shared Worker: נוצר באמצעות new SharedWorker('worker.js'). יכול להיות נגיש מכמה סקריפטים בחלונות או בכרטיסיות שונות של אותו מקור.
  • Service Worker: פועל כמתווך בין הדפדפן לרשת. משמש לאחסון מטמון של משאבים, עבודה אוטונומית ומימוש הודעות דחיפה.

התנהגות בין הזרם הראשי ל-Worker נעשית באופן אסינכרוני באמצעות הודעות:

  • postMessage(): לשליחת נתונים מזרם אחד לאחר.
  • מאזין אירועים onmessage: לקבלת נתונים בזרם אחר.

הגבלות Web Workers:

  • אין להם גישה ישירה ל-DOM.
  • אין להם גישה לאובייקטים window ו-document.
  • אין להם גישה לחלק מהמשתנים והפונקציות הגלובליות של הזרם הראשי.

דוגמה לשימוש ב- Dedicated Worker:

// main.js
const worker = new Worker('worker.js');

worker.addEventListener('message', (event) => {
  console.log('הודעה שהתקבלה מ-Worker:', event.data);
});

worker.postMessage('שלום מזרם הראשי!');

// worker.js
self.addEventListener('message', (event) => {
  console.log('הודעה שהתקבלה מזרם הראשי:', event.data);
  self.postMessage('שלום מ-Worker!');
});