🔍 inp.works

Ağır olay işleyici: bir tıklama neden 500 ms sürer ve nasıl düzeltilir

Ne oluyor

Bir kullanıcı tıkladığında, tarayıcı bir sonraki kareyi çizebilmeden önce olay işleyicinizi sonuna kadar çalıştırır. İşleyici yüzlerce milisaniyelik senkron iş yaparsa — büyük bir diziyi filtrelemek, DOM oluşturmak, JSON ayrıştırmak — sayfa tam o kadar süre donar. İşleyici geri dönene kadar kullanıcı hiçbir şeyin olmadığını görür.

Bu en yaygın INP sorunudur ve INP dökümünde uzun bir processing time aşaması olarak görünür.

Nasıl tanınır

Nasıl düzeltilir

Sorun

button.addEventListener("click", () => {
  const results = filterRows(allRows)   // 400 ms of sync work
  renderTable(results)                  // user saw nothing until now
})

Çözüm

button.addEventListener("click", async () => {
  button.classList.add("loading")       // instant feedback, painted first
  await scheduler.yield()               // let the browser paint
  const results = filterRows(allRows)
  renderTable(results)
  button.classList.remove("loading")
})
Sitenizi ücretsiz tarayın →
Advertise here