Rumah > Artikel > hujung hadapan web > Bolehkah Fungsi JavaScript Asynchronous Dilaksanakan Secara Segerak Tanpa Membekukan 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!