Saya melihat banyak digunakan next
di node.js.
Apa itu, dari mana asalnya? Apa fungsinya? Bisakah saya menggunakannya sisi klien?
Maaf itu digunakan untuk contoh di sini: http://dailyjs.com/2010/12/06/node-tutorial-5/
cari fungsi loadUser.
Saya melihat banyak digunakan next
di node.js.
Apa itu, dari mana asalnya? Apa fungsinya? Bisakah saya menggunakannya sisi klien?
Maaf itu digunakan untuk contoh di sini: http://dailyjs.com/2010/12/06/node-tutorial-5/
cari fungsi loadUser.
Jawaban:
Ini tampaknya menjadi konvensi penamaan variabel dalam kode kontrol-aliran Node.js, di mana referensi ke fungsi berikutnya untuk dieksekusi diberikan ke panggilan balik untuk kick-off ketika itu dilakukan.
Lihat, misalnya, contoh kode di sini:
Mari kita lihat contoh yang Anda posting:
function loadUser(req, res, next) {
if (req.session.user_id) {
User.findById(req.session.user_id, function(user) {
if (user) {
req.currentUser = user;
return next();
} else {
res.redirect('/sessions/new');
}
});
} else {
res.redirect('/sessions/new');
}
}
app.get('/documents.:format?', loadUser, function(req, res) {
// ...
});
The loadUser
Fungsi mengharapkan fungsi dalam argumen ketiga, yang terikat untuk nama next
. Ini adalah parameter fungsi normal. Itu memegang referensi ke tindakan berikutnya untuk melakukan dan dipanggil sekali loadUser
dilakukan (kecuali pengguna tidak dapat ditemukan).
Tidak ada yang istimewa tentang nama next
dalam contoh ini; kita bisa menamainya apa saja.
.next()
. Dia tampaknya bertanya tentang next
sebagai metode pada suatu objek.
return next();
return callback()
bukannyareturn next()
Ini adalah konvensi penamaan yang digunakan ketika meneruskan panggilan balik dalam situasi yang memerlukan eksekusi serial, misalnya memindai direktori -> membaca data file -> melakukan sesuatu dengan data. Ini lebih disukai untuk benar-benar bersarang dalam callback. Tiga bagian pertama dari artikel berikut di blog HowToNode Tim Caswell memberikan gambaran yang baik tentang ini:
http://howtonode.org/control-flow
Lihat juga Tindakan Berurutan dari bagian kedua dari posting itu:
Ini pada dasarnya seperti panggilan balik yang digunakan express.js setelah bagian tertentu dari kode dieksekusi dan dilakukan, Anda dapat menggunakannya untuk memastikan bahwa bagian dari kode dilakukan dan apa yang ingin Anda lakukan selanjutnya, tetapi selalu waspada Anda hanya dapat lakukan satu res.send
di setiap blok REST Anda ...
Jadi Anda dapat melakukan sesuatu seperti ini sebagai next()
contoh sederhana :
app.get("/", (req, res, next) => {
console.log("req:", req, "res:", res);
res.send(["data": "whatever"]);
next();
},(req, res) =>
console.log("it's all done!");
);
Ini juga sangat berguna ketika Anda ingin memiliki middleware di aplikasi Anda ...
Untuk memuat fungsi middleware, panggil app.use (), tentukan fungsi middleware. Sebagai contoh, kode berikut memuat fungsi middleware myLogger sebelum rute ke jalur root (/).
var express = require('express');
var app = express();
var myLogger = function (req, res, next) {
console.log('LOGGED');
next();
}
app.use(myLogger);
app.get('/', function (req, res) {
res.send('Hello World!');
})
app.listen(3000);