Görevleri Önceliğe Göre Planlama

Web özellikleri: Scheduler API

Karmaşık web uygulamaları oluştururken görevlerin farklı aciliyet düzeyleri vardır. Mevcut görünümle ilgili görevleri tamamlamak, analiz göndermekten veya öğeleri önceden getirmekten daha önemlidir. Prioritized Task Scheduling API, belirli önceliklere sahip işleri planlamanıza olanak tanıyarak tarayıcının kullanıcı girişine yanıt vermeye devam etmesini sağlar.

Görevleri önceliğe göre planlama

Görevleri üç öncelikten biriyle planlamak için scheduler.postTask() kullanın:

  • user-blocking: Kullanıcı etkileşimini engelleyen görevler (ör. giriş işleme, kritik oluşturma).
  • user-visible: Görevler kullanıcı tarafından görülebilir ancak engellenmez (varsayılan).
  • background: Zaman açısından kritik olmayan görevler (ör. analiz, önceden getirme).
// Schedule a high-priority task that blocks user interaction
scheduler.postTask(() => {
  // DO: Handle critical updates that impact user interaction
  handleCriticalUpdate();
}, { priority: 'user-blocking' });

// Schedule a default priority task
scheduler.postTask(() => {
  // DO: Render non-critical content that is visible to the user
  renderSecondaryContent();
}); // Defaults to 'user-visible'

// Schedule a low-priority background task
scheduler.postTask(() => {
  // DO: Perform heavy background work that is not time-critical
  sendAnalytics();
}, { priority: 'background' });

Yedek stratejiler

Prioritized Task Scheduling API'nin bulunmadığı tarayıcıları desteklemek için görev önceliklendirmeyi sürdürmek üzere bir polyfill kullanmanız gerekir.

// Feature detect the scheduler API
if (!('scheduler' in window && 'postTask' in window.scheduler)) {
  // DO: Conditionally load the polyfill for browsers that need it
  const script = document.createElement('script');
  script.src = 'https://unpkg.com/scheduler-polyfill';
  script.onload = () => {
    // Polyfill is loaded and ready to use
    runScheduledTasks();
  };
  document.head.appendChild(script);
} else {
  runScheduledTasks();
}

function runScheduledTasks() {
  // Now safe to use scheduler.postTask in all browsers
  scheduler.postTask(() => {
    console.log('Task with priority support');
  }, { priority: 'background' });
}