Kegemaran semua orang: masa video konsep! Panggilan balik adalah konsep penting dalam JavaScript. Mereka adalah fungsi yang dipanggil ketika tindakan selesai dijalankan. Kemudian pinjamkan struktur dan masa untuk kod kami.
Contohnya, animasi yang kita gunakan dalam video terakhir. Animasi memerlukan masa untuk berjalan. Bagaimana jika anda mahu sesuatu yang lain berlaku sebaik sahaja animasi itu selesai? Adakah anda perlu melakukan yang setTimeout
sama dengan animasi? Tidak. jQuery memberi kita fungsi panggilan balik yang digunakan hanya untuk tujuan tersebut.
Mereka biasanya merupakan parameter tambahan yang kami sampaikan kepada kaedah ini. Dalam kes animasi, kita meneruskan fungsi sebagai parameter terakhir. Itulah fungsi panggilan balik, dan akan dipanggil apabila animasi selesai.
$("#element").animate(( // stuff to animate ), function() ( // callback function ));
Itu mungkin kelihatan sedikit funky, tetapi pada dasarnya kita hanya melakukan:
.animate(a, b)
Di mana a
objek sifat dan nilai, dan b
fungsi panggilan balik.
Tetapi kita tahu dari video terakhir bahawa animasi juga dapat mengambil parameter waktu yang menentukan berapa lama animasi akan berlangsung. Ke mana ia pergi? Itu adalah parameter pilihan, seperti fungsi panggilan balik. Sekiranya kami ingin menggunakannya, kami meletakkannya tepat di tengah, jadi pada asasnya:
.animate(propertiesObject, duration, callback);
Dan ada parameter pilihan lain juga, rentetan yang dapat kami lalui untuk menentukan nilai pelonggaran.
.animate(propertiesObject, duration, easing, callback);
jQuery kebetulan sangat cerdas dan pintar mengenai parameter pilihan tersebut. Sekiranya anda meninggalkan pertengahan dua dan hanya meneruskan panggilan balik, ia dapat memberitahu apa yang anda lalui adalah fungsi, bukan nombor atau rentetan, jadi ia tahu maksud anda fungsi panggilan balik. Anda tidak perlu memasukkan nilai palsu atau apa sahaja. Itu hanya reka bentuk API yang bagus!
Apabila anda melihat dokumentasi jQuery, mereka menunjukkannya seperti ini:
.animate (sifat (, tempoh) (, pelonggaran) (, lengkap))
Kemudian setelah menerangkan jenis yang diharapkan.
Bagaimanapun, kembali ke panggilan balik. Anda boleh bersarang cantik. Bayangkan meletakkan animasi lain dalam fungsi panggilan balik, dan animasi itu mempunyai panggilan balik tersendiri. Itu sangat wajar, kerana anda mungkin mahu melakukan animasi pelbagai langkah. Anda hanya perlu kekal teratur.
Lihat Pen 450c5810be27a9a8946cb8012cbd1213 oleh Chris Coyier (@chriscoyier) di CodePen
Kami hanya menggunakan animasi sebagai contoh di sini. Mungkin penggunaan fungsi panggilan balik yang lebih biasa adalah Ajax. Ajax adalah apabila penyemak imbas memanggil sumber lain tanpa memuat semula halaman. Itu boleh memakan masa yang sama sekali tidak diketahui. Ia bergantung pada lebar jalur dan kependaman serta ukuran fail dan keadaan ralat serta semua jenis perkara. Anda mungkin tidak dapat berbuat apa-apa dengan permintaan Ajax itu sehingga anda mendapat sesuatu atau maklumat lain. Fungsi panggilan balik sangat sesuai untuk itu, dan kita akan menerimanya di kemudian hari.