Rumah >hujung hadapan web >tutorial js >Disimpan dari neraka panggil balik
pemaju sering melihat panggilan balik dengan penghinaan, mengaitkan mereka dengan "neraka panggilan balik" yang ditakuti. Walau bagaimanapun, panggilan balik adalah asas kepada sifat asynchronous JavaScript. Kuncinya tidak mengelakkan panggilan balik, tetapi menguasai penggunaan yang berkesan. Artikel ini meneroka strategi untuk menguruskan panggilan balik, beralih dari bersarang bermasalah ke kod asynchronous yang lebih bersih, lebih banyak diselenggarakan.
Takeaways utama:
async
, menunjukkan bagaimana ciri -ciri ini memudahkan pengaturcaraan asynchronous dan menawarkan jalan keluar dari "neraka panggil balik."
await
Panggilan balik adalah fungsi yang diluluskan sebagai hujah kepada fungsi lain, yang dilaksanakan pada masa yang tidak ditentukan kemudian. Fungsi penerimaan menentukan bila hendak memanggilnya. Ini penting untuk operasi tak segerak seperti permintaan Ajax.
Masalah timbul apabila kod tak segerak bergantung pada panggilan balik bersarang, mewujudkan struktur yang sangat terikat -"piramid azab" yang terkenal. Pertimbangkan contoh ini menggunakan
untuk mensimulasikan panggilan tak segerak:
setTimeout
<code class="language-javascript">setTimeout(function (name) { var catList = name + ','; // ... more nested setTimeouts ... }, 1, 'Panther');</code>
Menangani isu: Fungsi bernama dan struktur yang lebih baik
Menggantikan fungsi tanpa nama dengan fungsi yang dinamakan meningkatkan kebolehbacaan:
Walaupun ini menghilangkan piramid visual, ia memperkenalkan isu -isu scoping yang berpotensi dan duplikasi kod.
<code class="language-javascript">setTimeout(getPanther, 1, 'Panther'); function getPanther(name) { catList = name + ','; setTimeout(getJaguar, 1, 'Jaguar'); } // ... more named functions ...</code>
penyongsangan ketergantungan untuk decoupling
Prinsip penyongsangan kebergantungan menganjurkan pengekodan kepada abstraksi, bukan pelaksanaan. Kami boleh mencapai ini dengan membuat kontrak untuk panggilan balik kami:
Fungsi ini kini menerima panggil balik (
<code class="language-javascript">function buildFerociousCats(list, returnValue, fn) { setTimeout(function asyncCall(data) { var catList = list === '' ? data : list + ',' + data; fn(catList); }, 1, returnValue); }</code>) sebagai kebergantungan, decoupling logik teras dari butiran pelaksanaan tertentu.
fn
Untuk meningkatkan fleksibiliti, kita dapat memperkenalkan polimorfisme. Ini membolehkan kita mengubah tingkah laku panggilan balik tanpa mengubah fungsi teras: Sekarang, objek janji dan async/menunggu untuk kebolehbacaan yang dipertingkatkan Janji dan Ini membolehkan Chaining Cleaner menggunakan Kesimpulan Menguasai panggilan balik dalam JavaScript melibatkan pemahaman nuansa mereka dan menerapkan prinsip pengaturcaraan bunyi. Dengan memeluk teknik seperti fungsi bernama, penyongsangan ketergantungan, polimorfisme, janji, dan <code class="language-javascript">setTimeout(function (name) {
var catList = name + ',';
// ... more nested setTimeouts ...
}, 1, 'Panther');</code>
cat
merangkumi fungsi senarai dan pembatas, membolehkan beralih mudah antara pembatas yang berbeza (mis., Koma, paip). async
/await
menyediakan lebih banyak cara berstruktur untuk mengendalikan operasi tak segerak. Membungkus buildFerociousCats
dalam janji: <code class="language-javascript">setTimeout(getPanther, 1, 'Panther');
function getPanther(name) {
catList = name + ',';
setTimeout(getJaguar, 1, 'Jaguar');
}
// ... more named functions ...</code>
.then()
. async
/await
memudahkan ini dengan membenarkan kod asynchronous ditulis dalam gaya yang lebih segerak: <code class="language-javascript">function buildFerociousCats(list, returnValue, fn) {
setTimeout(function asyncCall(data) {
var catList = list === '' ? data : list + ',' + data;
fn(catList);
}, 1, returnValue);
}</code>
async
/await
, kita boleh bergerak melampaui "neraka panggilan balik" dan mencipta kod JavaScript yang elegan dan terpelihara. Fleksibiliti JavaScript memberi kuasa kepada amalan pengaturcaraan yang baik; Pemahaman yang kukuh mengenai asas adalah kunci untuk menulis kod yang cekap dan boleh dibaca.
Atas ialah kandungan terperinci Disimpan dari neraka panggil balik. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!