Sebelum memahami next
, Anda perlu memiliki sedikit gagasan tentang siklus Request-Response dalam simpul meskipun tidak banyak detail. Itu dimulai dengan Anda membuat permintaan HTTP untuk sumber daya tertentu dan berakhir ketika Anda mengirim respons kembali ke pengguna yaitu ketika Anda menemukan sesuatu seperti res.send ('Hello World');
mari kita lihat contoh yang sangat sederhana.
app.get('/hello', function (req, res, next) {
res.send('USER')
})
Di sini kita tidak perlu next (), karena resp.send akan mengakhiri siklus dan menyerahkan kontrol kembali ke rute middleware.
Sekarang mari kita lihat contoh lain.
app.get('/hello', function (req, res, next) {
res.send("Hello World !!!!");
});
app.get('/hello', function (req, res, next) {
res.send("Hello Planet !!!!");
});
Di sini kita memiliki 2 fungsi middleware untuk jalur yang sama. Tapi Anda akan selalu mendapat respons dari yang pertama. Karena yang dipasang pertama kali di tumpukan middleware dan kirim ulang akan mengakhiri siklus.
Tetapi bagaimana jika kita selalu tidak menginginkan "Hello World !!!!" respon balik. Untuk beberapa kondisi kita mungkin menginginkan "Hello Planet !!!!" tanggapan. Mari kita modifikasi kode di atas dan lihat apa yang terjadi.
app.get('/hello', function (req, res, next) {
if(some condition){
next();
return;
}
res.send("Hello World !!!!");
});
app.get('/hello', function (req, res, next) {
res.send("Hello Planet !!!!");
});
Apa yang next
dilakukan di sini. Dan ya, Anda mungkin memiliki gusses. Ini akan melewati fungsi middleware pertama jika kondisinya benar dan memanggil fungsi middleware berikutnya dan Anda akan mendapat "Hello Planet !!!!"
respons.
Jadi, selanjutnya lewati kontrol ke fungsi selanjutnya di tumpukan middleware.
Bagaimana jika fungsi middleware pertama tidak mengirim kembali respons apa pun tetapi jalankan logika dan kemudian Anda mendapatkan respons kembali dari fungsi middleware kedua.
Sesuatu seperti di bawah ini: -
app.get('/hello', function (req, res, next) {
// Your piece of logic
next();
});
app.get('/hello', function (req, res, next) {
res.send("Hello !!!!");
});
Dalam hal ini Anda membutuhkan kedua fungsi middleware untuk dipanggil. Jadi, satu-satunya cara Anda mencapai fungsi middleware kedua adalah dengan memanggil next ();
Bagaimana jika Anda tidak melakukan panggilan ke berikutnya. Jangan berharap fungsi middleware kedua dipanggil secara otomatis. Setelah menjalankan fungsi pertama, permintaan Anda akan dibiarkan menggantung. Fungsi kedua tidak akan pernah dipanggil dan Anda tidak akan mendapatkan kembali responsnya.
res.send
untuk menyelesaikan permintaan. Jika tidak ada, ada kemungkinan handler lain yang akan mengeluarkan kesalahan dan menyelesaikan permintaan itu.