Karena fungsi adalah objek kelas satu, kita dapat meneruskan fungsi sebagai argumen di fungsi lain dan kemudian menjalankan fungsi yang diteruskan tersebut atau bahkan mengembalikannya untuk dieksekusi nanti. Ini adalah inti dari penggunaan fungsi callback di JavaScript. Di sisa artikel ini kita akan mempelajari segala sesuatu tentang fungsi callback JavaScript. Fungsi panggilan balik mungkin merupakan teknik pemrograman fungsional yang paling banyak digunakan dalam JavaScript, dan Anda dapat menemukannya di hampir setiap bagian kode JavaScript dan jQuery, namun tetap misterius bagi banyak pengembang JavaScript. Misteri itu tidak akan ada lagi, pada saat Anda selesai membaca artikel ini Show
Fungsi panggilan balik berasal dari paradigma pemrograman yang dikenal sebagai pemrograman fungsional. Pada tingkat dasar, pemrograman fungsional menentukan penggunaan fungsi sebagai argumen. Pemrograman fungsional adalah — dan masih, meskipun pada tingkat yang jauh lebih rendah saat ini — dilihat sebagai teknik esoterik dari programmer ahli yang terlatih khusus. Untungnya, teknik pemrograman fungsional telah dijelaskan sehingga manusia biasa seperti Anda dan saya dapat memahami dan menggunakannya dengan mudah. Salah satu teknik utama dalam pemrograman fungsional adalah fungsi callback. Seperti yang akan Anda baca sebentar lagi, mengimplementasikan fungsi callback semudah meneruskan variabel biasa sebagai argumen. Teknik ini sangat sederhana sehingga saya bertanya-tanya mengapa teknik ini sebagian besar tercakup dalam topik JavaScript tingkat lanjut Apa itu Fungsi Callback atau Higher-order?Fungsi callback, juga dikenal sebagai fungsi tingkat tinggi, adalah fungsi yang diteruskan ke fungsi lain (sebut saja fungsi lain ini "otherFunction") sebagai parameter, dan fungsi callback dipanggil (atau dijalankan) di dalam fungsi lain. Fungsi panggilan balik pada dasarnya adalah sebuah pola (solusi mapan untuk masalah umum), dan oleh karena itu, penggunaan fungsi panggilan balik juga dikenal sebagai pola panggilan balik Pertimbangkan penggunaan umum fungsi callback di jQuery
Seperti yang Anda lihat pada contoh sebelumnya, kami meneruskan fungsi sebagai parameter ke metode klik. Dan metode click akan memanggil (atau menjalankan) fungsi panggilan balik yang kami berikan padanya. Contoh ini mengilustrasikan penggunaan umum fungsi callback di JavaScript, dan yang banyak digunakan di jQuery Renungkan contoh klasik fungsi callback lainnya di JavaScript dasar ini _Sekali lagi, perhatikan cara kami meneruskan fungsi anonim (fungsi tanpa nama) ke metode forEach sebagai parameter Sejauh ini kita telah melewatkan fungsi anonim sebagai parameter ke fungsi atau metode lain. Sekarang mari kita pahami cara kerja callback sebelum kita melihat contoh yang lebih konkret dan mulai membuat fungsi callback kita sendiri Bagaimana Fungsi Callback Bekerja?Kita dapat meneruskan fungsi seperti variabel dan mengembalikannya dalam fungsi dan menggunakannya dalam fungsi lain. Saat kami meneruskan fungsi panggilan balik sebagai argumen ke fungsi lain, kami hanya meneruskan definisi fungsi. Kami tidak menjalankan fungsi di parameter. Dengan kata lain, kita tidak melewatkan fungsi dengan pasangan akhir dari tanda kurung eksekusi () seperti yang kita lakukan saat mengeksekusi sebuah fungsi Dan karena fungsi yang memuatnya memiliki fungsi panggilan balik dalam parameternya sebagai definisi fungsi, ia dapat menjalankan panggilan balik kapan saja Perhatikan bahwa fungsi panggilan balik tidak segera dijalankan. Itu "dipanggil kembali" (karena itu namanya) di beberapa titik tertentu di dalam tubuh fungsi yang memuatnya. Jadi, meskipun contoh jQuery pertama terlihat seperti ini
fungsi anonim akan dipanggil nanti di dalam badan fungsi. Bahkan tanpa nama, itu masih bisa diakses nanti melalui objek argumen dengan fungsi yang memuatnya Fungsi Callback Adalah Penutupan Prinsip Dasar saat Mengimplementasikan Fungsi CallbackMeskipun tidak rumit, fungsi callback memiliki beberapa prinsip penting yang harus kita ketahui saat mengimplementasikannya Gunakan Fungsi Bernama ATAU Anonim sebagai Callback
Meneruskan Parameter ke Fungsi Panggilan Balik _Pastikan Callback adalah Fungsi Sebelum Menjalankannya Mari refactor fungsi getInput dari contoh sebelumnya untuk memastikan pemeriksaan ini dilakukan
Tanpa tanda centang, jika fungsi getInput dipanggil tanpa fungsi panggilan balik sebagai parameter atau sebagai pengganti fungsi, non-fungsi dilewatkan, kode kita akan menghasilkan kesalahan runtime Masalah Saat Menggunakan Metode Dengan Objek ini sebagai Callback _Dalam contoh kode berikut, ketika clientData. setUserName dijalankan, ini. fullName tidak akan menetapkan properti fullName pada objek clientData. Sebaliknya, itu akan mengatur fullName pada objek window, karena getUserInput adalah fungsi global. Ini terjadi karena this objek dalam fungsi global menunjuk ke objek window
Gunakan Fungsi Panggil atau Terapkan Untuk Melestarikan ini Panggilan mengambil nilai yang akan digunakan sebagai objek this di dalam fungsi sebagai parameter pertama, dan argumen yang tersisa untuk diteruskan ke fungsi diteruskan secara individual (tentu saja dipisahkan dengan koma). Parameter pertama fungsi Terapkan juga merupakan nilai yang akan digunakan sebagai objek this di dalam fungsi, sedangkan parameter terakhir adalah larik nilai (atau objek argumen) untuk diteruskan ke fungsi Ini terdengar rumit, tetapi mari kita lihat betapa mudahnya menggunakan Terapkan atau Panggil. Untuk memperbaiki masalah pada contoh sebelumnya, kita akan menggunakan fungsi Apply _Dengan fungsi Apply mengatur objek this dengan benar, kita sekarang dapat mengeksekusi callback dengan benar dan menyetel properti fullName dengan benar pada objek clientData _Kami juga akan menggunakan fungsi Panggilan, tetapi dalam hal ini kami menggunakan fungsi Terapkan Beberapa Fungsi Panggilan Balik Diizinkan _0Masalah Dan Solusi "Callback Hell".Dalam eksekusi kode asinkron, yang hanya merupakan eksekusi kode dalam urutan apa pun, terkadang memiliki banyak level fungsi panggilan balik sejauh Anda memiliki kode yang terlihat seperti berikut. Kode yang berantakan di bawah ini disebut callback hell karena sulitnya mengikuti kode karena banyaknya callback. Saya mengambil contoh ini dari node-mongodb-native, driver MongoDB untuk Node.js. js. [2]. Contoh kode di bawah ini hanya untuk demonstrasi _1Anda mungkin tidak akan sering menghadapi masalah ini dalam kode Anda, tetapi ketika Anda melakukannya—dan Anda akan mengalaminya dari waktu ke waktu—berikut adalah dua solusi untuk masalah ini. [3]
Buat Fungsi Panggilan Balik Anda SendiriSekarang Anda sepenuhnya (saya pikir Anda melakukannya; jika tidak, baca ulang dengan cepat. )) memahami segala sesuatu tentang fungsi callback JavaScript dan Anda telah melihat bahwa menggunakan fungsi callback agak sederhana namun kuat, Anda harus melihat kode Anda sendiri untuk peluang menggunakan fungsi callback, karena mereka akan memungkinkan Anda untuk
Agak mudah untuk membuat fungsi callback Anda sendiri. Dalam contoh berikut, saya dapat membuat satu fungsi untuk melakukan semua pekerjaan. mengambil data pengguna, membuat puisi generik dengan data, dan menyapa pengguna. Ini akan menjadi fungsi yang berantakan dengan banyak pernyataan if/else dan, bahkan tetap saja, itu akan sangat terbatas dan tidak mampu menjalankan fungsi lain yang mungkin diperlukan aplikasi dengan data pengguna Alih-alih, saya meninggalkan implementasi untuk fungsionalitas tambahan hingga fungsi panggilan balik, sehingga fungsi utama yang mengambil data pengguna dapat melakukan hampir semua tugas dengan data pengguna hanya dengan meneruskan nama lengkap dan jenis kelamin pengguna sebagai parameter ke fungsi panggilan balik dan Singkatnya, fungsi getUserInput bersifat serbaguna. itu dapat menjalankan semua jenis fungsi panggilan balik dengan segudang fungsi _2Panggil fungsi getUserInput dan teruskan fungsi genericPoemMaker sebagai panggilan balik _3Karena fungsi getUserInput hanya menangani pengambilan data, kita dapat meneruskan panggilan balik apa pun ke sana. Misalnya, kita bisa melewatkan fungsi greetUser seperti ini _4Kami memanggil fungsi getUserInput yang sama seperti yang kami lakukan sebelumnya, tetapi kali ini melakukan tugas yang sama sekali berbeda Seperti yang Anda lihat, fungsi panggilan balik menghasilkan banyak keserbagunaan. Dan meskipun contoh sebelumnya relatif sederhana, bayangkan berapa banyak pekerjaan yang dapat Anda selamatkan sendiri dan seberapa baik abstraksi kode Anda jika Anda mulai menggunakan fungsi callback. Pergi untuk itu. Lakukan di monings; Perhatikan cara-cara berikut kami sering menggunakan fungsi panggilan balik dalam JavaScript, terutama dalam pengembangan aplikasi web modern, di perpustakaan, dan dalam kerangka kerja
Kata AkhirFungsi panggilan balik JavaScript luar biasa dan kuat untuk digunakan dan memberikan manfaat besar untuk aplikasi dan kode web Anda. Anda harus menggunakannya saat dibutuhkan; Sampai jumpa lagi, dan ingat untuk terus kembali karena JavaScriptIsSexy. com memiliki banyak hal untuk mengajari Anda dan Anda harus banyak belajar Bagaimana cara kerja panggilan balik dalam JavaScript?Fungsi panggilan balik adalah fungsi yang diteruskan ke fungsi lain sebagai argumen, yang kemudian dipanggil di dalam fungsi luar untuk menyelesaikan semacam rutinitas atau tindakan. The above example is a synchronous callback, as it is executed immediately.
Bagaimana Anda menerapkan fungsi panggilan balik?Fungsi callback khusus dapat dibuat dengan menggunakan kata kunci callback sebagai parameter terakhir . Itu kemudian dapat dipanggil dengan memanggil fungsi callback() di akhir fungsi. Operator typeof secara opsional digunakan untuk memeriksa apakah argumen yang diteruskan sebenarnya adalah fungsi. menghibur.
Apa itu implementasi callback?Callback adalah mekanisme dalam Pemrograman Berorientasi Objek yang memungkinkan aplikasi menangani event langganan, yang muncul saat runtime, melalui antarmuka pendengar . Pelanggan perlu menyediakan implementasi konkret dari metode abstrak antarmuka.
Kapan panggilan balik dijalankan?Fungsi panggilan balik adalah fungsi yang terjadi setelah beberapa peristiwa terjadi. Referensi dalam memori ke fungsi callback biasanya diteruskan ke fungsi lain. Hal ini memungkinkan fungsi lain untuk mengeksekusi callback ketika telah menyelesaikan tugasnya dengan menggunakan sintaks khusus bahasa untuk mengeksekusi suatu fungsi. |