🔍 inp.works

Event handler yang berat: mengapa klik butuh 500 ms dan cara memperbaikinya

Apa yang terjadi

Saat pengguna mengklik, browser menjalankan event handler Anda sampai selesai sebelum dapat melukis frame berikutnya. Jika handler melakukan ratusan milidetik kerja sinkron — memfilter array besar, membangun DOM, mem-parsing JSON — halaman membeku persis selama itu. Pengguna tidak melihat apa pun sampai handler kembali.

Ini adalah masalah INP paling umum dan muncul dalam rincian INP sebagai fase processing time yang panjang.

Cara mengenali

Cara memperbaiki

Masalah

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

Perbaikan

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")
})
Pindai situs Anda gratis →
Advertise here