Rumah  >  Artikel  >  hujung hadapan web  >  Bolehkah Fungsi JavaScript Asynchronous Dilaksanakan Secara Segerak Tanpa Membekukan UI?

Bolehkah Fungsi JavaScript Asynchronous Dilaksanakan Secara Segerak Tanpa Membekukan UI?

Patricia Arquette
Patricia Arquetteasal
2024-11-16 18:40:03780semak imbas

Can Asynchronous JavaScript Functions Be Executed Synchronously Without Freezing the UI?

Pelaksanaan Segerak bagi Fungsi JavaScript Tak Segerak

Dalam situasi tertentu, mungkin perlu untuk melaksanakan fungsi JavaScript tak segerak secara serentak, tetapi tanpa membekukan UI . Walaupun ini secara amnya tidak dianggap sebagai amalan yang baik, terdapat kes tertentu yang mungkin dianggap perlu.

Cabaran

Matlamatnya adalah untuk menyekat fungsi sehingga panggilan balik dipanggil, tanpa membekukan UI. Ini memberikan cabaran kerana menyekat JavaScript biasanya menyebabkan UI terhenti.

Penyelesaian Kemungkinan

Satu penyelesaian yang mungkin melibatkan penggunaan tinjauan pendapat untuk menyemak pembolehubah global yang ditetapkan oleh panggilan balik . Berikut ialah contoh:

function doSomething() {

  // Callback sets received data to a global variable
  function callBack(d) {
    window.data = d;
  }

  // Start the async
  myAsynchronousCall(param1, callBack);
}

// Start the function
doSomething();

// Clear the global data
window.data = null;

// Poll at an interval until data is found in the global
var intvl = setInterval(function() {
  if (window.data) {
    clearInterval(intvl);
    console.log(data);
  }
}, 100);

Pendekatan ini membenarkan fungsi panggilan untuk menyekat sehingga data diterima daripada panggilan balik, tanpa membekukan UI. Walau bagaimanapun, ia menganggap bahawa fungsi doSomething() boleh diubah suai untuk menggunakan pembolehubah global.

Amalan Terbaik

Adalah penting untuk ambil perhatian bahawa pendekatan ini dianggap sebagai suboptimum penyelesaian. Sebaik-baiknya, panggilan tak segerak harus dikendalikan menggunakan panggilan balik atau janji, dan bukannya menyekat fungsi. Walau bagaimanapun, ia mungkin perlu sebagai penyelesaian sementara dalam pangkalan kod tertentu yang tidak boleh diubah suai dengan mudah.

Atas ialah kandungan terperinci Bolehkah Fungsi JavaScript Asynchronous Dilaksanakan Secara Segerak Tanpa Membekukan UI?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn