Definasi fungsi panggil balik adalah untuk menghantar fungsi b sebagai parameter kepada a untuk pelaksanaan Pada masa ini, b ialah fungsi panggil balik tiba-tiba saya mempunyai soalan, apakah perbezaan antara ia dan memanggil b secara langsung dalam fungsi a.
Saya menulis demo sendiri
function a(){ b(); console.log('hello world'); } function b(){ var n = 0; for(var i = 0;i < 1000000000;i++){ n++; } return n; } a(); //hello world
Ia akan mengambil masa kira-kira 3 saat untuk melihat hasil output, dan kemudian menulisnya semula dalam bentuk fungsi panggil balik
function a(callback){ callback.call(this); console.log('hello world'); } function b(){ var n = 0; for(var i = 0;i < 1000000000;i++){ } console.log(1); } a(b); //hello world
Hasil keluaran hanya boleh dilihat selepas 3 saat
Saya telah menjumpai banyak artikel, yang semuanya menjelaskan bahawa apabila b dilaksanakan sebagai fungsi panggil balik fungsi a, ia tidak menghalang perlaksanaan biasa fungsi a , kaedah kedua hendaklah serta-merta Apabila ia mengeluarkan hello world, adakah ia kerana saya menggunakan fungsi panggil balik yang salah? Masih mengalami masalah untuk memahami?
1. Tiada perbezaan dalam prestasi
2 Fungsi panggil balik diluluskan sebagai parameter, dan operasi lebih fleksibel Contohnya, anda boleh mentakrifkan fungsi c, yang boleh dijalankan
b(c), apabila anda jalankan fungsi dalam fungsi, Fleksibiliti pembolehubah hilang.
Nah, anda salah faham, kesan panggilan adalah sama. Dan
callback.call(this);
画蛇添足,跟callback()
ini adalah sama.Kelebihan panggilan balik ialah penyongsangan kebergantungan Anda boleh membiarkan panggilan c, d, e tanpa mengubah suai kod a...