Menyegerakkan Panggilan JavaScript Tak Segerak
Pengenalan
Fungsi JavaScript Tak Segerak membolehkan kami melaksanakan tugas secara serentak tanpa menyekat benang utama. Walau bagaimanapun, dalam senario tertentu, mungkin perlu memanggil fungsi tak segerak secara serentak, dengan berkesan menyekat pelaksanaan semasa sehingga tugasan selesai.
Pelaksanaan
Bertentangan dengan popular kepercayaan, adalah mustahil untuk benar-benar menyekat pelaksanaan JavaScript secara tidak segerak tanpa menjejaskan UI. Satu pendekatan untuk mensimulasikan penyekatan adalah dengan meninjau pembolehubah global, menunggu untuk ditetapkan oleh fungsi panggil balik.
function doSomething() { // Global variable for callback data window.data = null; function callBack(d) { window.data = d; } // Start asynchronous call myAsynchronousCall(param1, callBack); // Start polling interval var intvl = setInterval(function() { if (window.data) { clearInterval(intvl); console.log(data); } }, 100); }
Walaupun kaedah ini mencapai tingkah laku separa menyekat, ia tidak sesuai kerana ia boleh membawa kepada overhed prestasi yang ketara.
Penyelesaian Pilihan
Jika boleh, adalah lebih baik untuk lulus fungsi panggil balik kepada panggilan tak segerak dan minta ia mengendalikan hasilnya apabila bersedia:
function doSomething(func) { function callBack(d) { func(d); } myAsynchronousCall(param1, callBack); } doSomething(function(data) { console.log(data); });
Pendekatan ini mengelakkan overhed pengundian dan membolehkan pemprosesan tak segerak yang lebih cekap.
Atas ialah kandungan terperinci Bagaimana untuk \'Menyegerakkan\' Panggilan Javascript Asynchronous?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!