next
Node.js'de çok fazla kullanım görüyorum.
Nedir, nereden geliyor? Bu ne işe yarıyor? İstemci tarafını kullanabilir miyim?
Üzgünüm burada örnek olarak kullanılmıştır: http://dailyjs.com/2010/12/06/node-tutorial-5/
loadUser işlevini arayın.
next
Node.js'de çok fazla kullanım görüyorum.
Nedir, nereden geliyor? Bu ne işe yarıyor? İstemci tarafını kullanabilir miyim?
Üzgünüm burada örnek olarak kullanılmıştır: http://dailyjs.com/2010/12/06/node-tutorial-5/
loadUser işlevini arayın.
Yanıtlar:
Bu, çalıştırılacak bir sonraki işleve bir başvurunun, tamamlandığında başlaması için bir geri aramaya verildiği Node.js kontrol akış kodunda değişken bir adlandırma kuralı gibi görünüyor.
Örneğin, buradaki kod örneklerine bakın:
Gönderdiğiniz örneğe bakalım:
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) {
// ...
});
loadUser
İşlev adına bağlı üçüncü bir argüman, bir işlevi bekler next
. Bu normal bir işlev parametresidir. Gerçekleştirilecek bir sonraki eyleme referans verir ve bir kez loadUser
yapıldığında çağrılır (kullanıcı bulunamadıysa).
next
Bu örnekte isimle ilgili özel bir şey yok ; ona herhangi bir ad verebilirdik.
.next()
. next
Bir nesne üzerinde bir yöntem olarak soruyor gibi görünüyor .
return next();
return callback()
yerinereturn next()
Seri dizin yürütme gerektiren durumlarda geri aramalar iletilirken kullanılan adlandırma kuralıdır, örneğin dizin tarama -> dosya verilerini oku -> verilerle bir şeyler yapın. Bu, geri çağrıları derinlemesine iç içe yerleştirmeyi tercih eder. Tim Caswell'in HowToNode blogunda yer alan aşağıdaki makalenin ilk üç bölümü buna iyi bir genel bakış sunmaktadır:
http://howtonode.org/control-flow
Ayrıca, bu yayının ikinci bölümünün Sıralı İşlemler bölümüne bakın:
Temelde, express.js'nin kodun belirli bir bölümü yürütüldükten ve yapıldıktan sonra kullandığı bir geri arama gibidir, kodun bir kısmının yapıldığından ve bir sonraki şeyde ne yapmak istediğinizden emin olmak için kullanabilirsiniz, ancak her zaman yalnızca birini res.send
senin her DİNLENME bloğu ...
Böylece basit bir next()
örnek olarak böyle bir şey yapabilirsiniz :
app.get("/", (req, res, next) => {
console.log("req:", req, "res:", res);
res.send(["data": "whatever"]);
next();
},(req, res) =>
console.log("it's all done!");
);
Uygulamanızda bir ara katman yazılımı olmasını istediğinizde de çok kullanışlıdır ...
Ara katman yazılımı işlevini yüklemek için, ara katman yazılımı işlevini belirterek app.use () öğesini çağırın. Örneğin, aşağıdaki kod myLogger ara katman yazılımı işlevini kök yoluna (/) giden yoldan önce yükler.
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);