dapatkah seseorang memberi saya contoh sederhana dari panggilan balik nodeJs, saya telah mencari hal yang sama di banyak situs web tetapi tidak dapat memahaminya dengan benar, Tolong beri saya contoh sederhana.
getDbFiles(store, function(files){
getCdnFiles(store, function(files){
})
})
Saya ingin melakukan sesuatu seperti itu ...
javascript
node.js
asynchronous
callback
asynccallback
Bhushan Goel
sumber
sumber
Jawaban:
Sekarang buka node atau konsol browser dan tempel definisi di atas.
Terakhir gunakan dengan baris berikut ini:
Sehubungan dengan Konvensi Kesalahan Gaya Node
Costa bertanya bagaimana ini akan terlihat jika kita menghormati konvensi panggilan balik kesalahan node.
Dalam konvensi ini, callback harus menerima setidaknya satu argumen, argumen pertama, sebagai kesalahan. Secara opsional kami akan memiliki satu atau lebih argumen tambahan, tergantung pada konteksnya. Dalam hal ini, konteksnya adalah contoh di atas.
Di sini saya menulis ulang contoh kita dalam konvensi ini.
Jika kita ingin mensimulasikan kasus kesalahan, kita dapat mendefinisikan usingItNow seperti ini
Penggunaan akhir persis sama seperti di atas:
Satu-satunya perbedaan dalam perilaku bergantung pada versi mana yang
usingItNow
Anda tentukan: versi yang memberi "nilai kebenaran" (objek Error) ke callback untuk argumen pertama, atau versi yang memberinya null untuk argumen error .sumber
Fungsi callback hanyalah sebuah fungsi yang Anda berikan ke fungsi lain sehingga fungsi tersebut dapat memanggilnya di lain waktu. Ini biasanya terlihat di asynchronous API ; panggilan API segera kembali karena asinkron, jadi Anda meneruskan fungsi ke dalamnya yang bisa dipanggil API setelah selesai melakukan tugas asinkronnya.
Contoh paling sederhana yang dapat saya pikirkan dalam JavaScript adalah
setTimeout()
fungsinya. Ini adalah fungsi global yang menerima dua argumen. Argumen pertama adalah fungsi panggilan balik dan argumen kedua adalah penundaan dalam milidetik. Fungsi ini dirancang untuk menunggu waktu yang sesuai, kemudian menjalankan fungsi panggilan balik Anda.Anda mungkin pernah melihat kode di atas sebelumnya tetapi tidak menyadari bahwa fungsi yang Anda lewati disebut fungsi panggilan balik. Kita bisa menulis ulang kode di atas agar lebih jelas.
Callback digunakan di semua tempat di Node karena Node dibangun dari awal untuk menjadi asynchronous dalam segala hal yang dilakukannya. Bahkan saat berbicara dengan sistem file. Itulah mengapa banyak Node API internal menerima fungsi callback sebagai argumen daripada menampilkan data yang dapat Anda tetapkan ke variabel. Alih-alih itu akan memanggil fungsi panggilan balik Anda, meneruskan data yang Anda inginkan sebagai argumen. Misalnya, Anda bisa menggunakan
fs
perpustakaan Node untuk membaca file. Thefs
Modul menghadapkan dua fungsi API yang unik:readFile
danreadFileSync
.The
readFile
fungsi asynchronous sementarareadFileSync
tidak jelas. Anda dapat melihat bahwa mereka bermaksud agar Anda menggunakan panggilan asinkron kapan pun memungkinkan karena mereka memanggilnyareadFile
danreadFileSync
bukannyareadFile
danreadFileAsync
. Berikut adalah contoh penggunaan kedua fungsi tersebut.Sinkronis:
Kode di atas memblokir eksekusi thread hingga semua konten
test.txt
dibaca ke dalam memori dan disimpan dalam variabeldata
. Di node ini biasanya dianggap praktik yang buruk. Ada kalanya berguna, seperti ketika menulis skrip kecil cepat untuk melakukan sesuatu yang sederhana namun membosankan dan Anda tidak terlalu peduli untuk menghemat setiap nanodetik waktu yang Anda bisa.Asynchronous (dengan callback):
Pertama kita membuat fungsi panggilan balik yang menerima dua argumen
err
dandata
. Satu masalah dengan fungsi asynchronous adalah semakin sulitnya menjebak kesalahan sehingga banyak API gaya panggilan balik meneruskan kesalahan sebagai argumen pertama ke fungsi panggilan balik. Praktik terbaiknya adalah memeriksa apakaherr
memiliki nilai sebelum Anda melakukan hal lain. Jika demikian, hentikan eksekusi callback dan catat kesalahannya.Panggilan sinkron memiliki keuntungan ketika ada pengecualian karena Anda dapat dengan mudah menangkapnya dengan satu
try/catch
blok.Dalam fungsi asinkron tidak berfungsi seperti itu. Panggilan API segera kembali sehingga tidak ada yang menarik dengan
try/catch
. API asinkron yang tepat yang menggunakan callback akan selalu menangkap kesalahannya sendiri dan kemudian meneruskan kesalahan tersebut ke dalam callback di mana Anda dapat menanganinya sesuai keinginan Anda.Selain callback, ada gaya API populer lainnya yang biasa digunakan yang disebut promise. Jika Anda ingin membaca tentang mereka maka Anda dapat membaca seluruh posting blog yang saya tulis berdasarkan jawaban ini di sini .
sumber
Berikut adalah contoh menyalin file teks dengan
fs.readFile
danfs.writeFile
:Dan itulah contoh penggunaan
copyFile
fungsi:Pola node.js umum menunjukkan bahwa argumen pertama dari fungsi panggilan balik adalah kesalahan. Anda harus menggunakan pola ini karena semua modul aliran kontrol mengandalkannya:
sumber
Coba contoh ini sesederhana yang Anda bisa baca, cukup salin simpan newfile.js lakukan node newfile untuk menjalankan aplikasi.
sumber
kami membuat fungsi sederhana sebagai
sumber
'fs' adalah modul node yang membantu Anda membaca file. Fungsi callback akan memastikan bahwa file Anda yang bernama 'input.txt' telah dibaca sepenuhnya sebelum dijalankan. fs.stat () berfungsi untuk mendapatkan informasi file seperti ukuran file, tanggal dibuat dan tanggal diubah.
sumber
sumber
A
callback
adalah fungsi yang dikirimkan sebagai parameter ke aHigher Order Function
( wikipedia ). Implementasi sederhana dari callback adalah:Untuk memanggil fungsi tersebut, cukup berikan fungsi lain sebagai argumen ke fungsi yang ditentukan.
sumber
Posting blog ini memiliki artikel yang bagus:
https://codeburst.io/javascript-what-the-heck-is-a-callback-aba4da2deced
sumber