Baru -baru ini, saya melihat Express, dan saya telah melihatnya di mana -mana, menggunakan fungsi panggilan balik sebagai parameter. Jika konsep ini tidak dapat dipahami, Kode NodeJs dan Express akan sangat bingung. Misalnya:
Salinan kode adalah sebagai berikut:
app.use (function (req, res, next) {
var err = kesalahan baru ('tidak ditemukan');
err.status = 404;
Berikutnya (err);
});
APP adalah objek, penggunaan adalah metode, dan parameter metode ini adalah fungsi anonim dengan parameter, dan badan fungsi langsung diberikan nanti. Bagaimana Anda memahami kode ini? Pertama -tama mari kita pahami konsep fungsi panggilan balik.
Pertama -tama, kita perlu memahami bahwa dalam JS, fungsi juga merupakan objek, yang dapat ditugaskan ke variabel dan dapat ditempatkan sebagai parameter dalam daftar parameter fungsi. Misalnya:
Salinan kode adalah sebagai berikut:
var dosomething = fungsi (a, b)
{
mengembalikan A + B;
}
Kode ini berarti mendefinisikan fungsi anonim. Kecuali untuk tidak memiliki nama, fungsi anonim ini tidak berbeda dari fungsi biasa. Kemudian tetapkan fungsi anonim ke variabel dosomething. Selanjutnya kami menelepon:
Salinan kode adalah sebagai berikut:
console.log (dosomething (2,3));
Ini menghasilkan 5.
Fungsi callback ditempatkan dalam daftar parameter fungsi lain (seperti induk), diteruskan ke induk sebagai parameter, dan kemudian dieksekusi pada posisi tertentu dalam badan fungsi induk. Untuk memasukkannya ke dalam abstraksi, lihat contohnya:
Salinan kode adalah sebagai berikut:
// Untuk mengilustrasikan konsep panggilan balik
var doit = fungsi (callback)
{
var a = 1,
b = 2,
C = 3;
var t = callback (a, b, c);
mengembalikan T + 10;
};
var d = doit (function (x, y, z) {
return (x+y+z);
});
Console.log (D);
Pertama -tama tentukan fungsi DOIT, dan ada panggilan balik parameter. Panggilan balik ini adalah fungsi panggilan balik, dan namanya dapat diambil secara sewenang -wenang. Melihat tubuh fungsi, pertama -tama mendefinisikan tiga variabel A, B, dan C. Kemudian hubungi fungsi panggilan balik. Akhirnya, nilai dikembalikan.
Berikut ini adalah fungsi DOIT. Perlu dicatat bahwa ketika Anda mendefinisikan DoIT sekarang, panggilan balik tidak ditentukan, jadi Anda tidak tahu untuk apa panggilan balik. Ini sebenarnya mudah dimengerti. Ketika kita mendefinisikan fungsi, parameter hanya memberikan nama, seperti A, menggunakan A dalam tubuh fungsi, tetapi seluruh proses tidak tahu apa itu. Hanya ketika fungsi dipanggil ditentukan, seperti 2. Melihat ke belakang, ketika memanggil Doit, kita perlu menentukan apa panggilan balik itu. Seperti yang Anda lihat, fungsi ini melengkapi fungsi SUM.
Proses eksekusi kode di atas adalah:
Panggil fungsi DOIT, parameter adalah fungsi anonim; Masukkan tubuh fungsi doit, pertama -tama tentukan a, b, c, dan kemudian jalankan fungsi anonim sekarang, parameternya adalah a, b, c, dan mengembalikan t, dan akhirnya mengembalikan t+10 ke d.
Kembali ke contoh asli, app.use (...) adalah panggilan fungsi. Kita dapat membayangkan bahwa metode penggunaan pasti telah ditentukan sebelumnya, tetapi tidak diberikan di sini. Dengan membandingkan dua contoh ini, Anda dapat segera memahaminya.
Saat menggunakan nodej dan ekspres, tidak mungkin bagi kita untuk menemukan definisi fungsi dari setiap metode atau fungsi untuk melihatnya. Jadi ketahuilah parameter apa yang diteruskan ke Callback dalam definisi itu. Kemudian ketika memanggil metode atau fungsi, kami mendefinisikan fungsi anonim dalam parameter untuk menyelesaikan fungsi tertentu.
Lebih!