2013-05-14 36 views
10

Nodejs ile Restify kullanıyorum ve bir sonraki middleware'e yığın içinde doğru şekilde dönmeyi kontrol etme konusunda bir sorum var. "Yığında bir sonraki katman yazılımı" dediğimde doğru ifadeyi kullanıyorum.Yeryüzünü Yasaklama - yığınta bir sonraki ara katman doğru olarak çağırılıyor

Temelde, benim kod şöyle görünür:

//server is the server created using Restify 
server.use(function (req, res, next) { 
    //if some checks are a success 
    return next(); 
}); 

Şimdi, bildiğim isteyen kod return next(); olmalıdır mi yoksa yığınında sonrakine kontrolünü geçmek için sadece next(); olmalıdır?

Her ikisini de kontrol ettim ve her ikisi de işte bu - kodun her ikisi de kontrolü başarıyla geçecek ve verileri beklendiği gibi döndürecek - bilmek istediğim, ikisi arasında bir fark olup olmadığını ve eğer diğerini kullanmam gerekirse .

cevap

17

Fark yok. Restify kaynağına bir göz attım ve bir ara yazılımın dönüş değeriyle hiçbir şey yapmıyor gibi görünüyor.

if (someCondition) 
    next(); 
res.send(...); // !!! oops! we already called the next middleware *and* we're 
       //  sending a response ourselves! 
+1

Merhaba, bir sonraki geri arama yapıyor ne 'Beni yanıtlayabilir: Böyle hataları önlemeye yardımcı olabilir

// using this... if (someCondition) { return next(); } res.send(...); // instead of... if (someCondition) { next(); } else { res.send(...); }; 

:

return next() kullanılmasının sebebi tamamen kolaylık meselesi http işleyicileri? server.get ('/', işlev (req, res, next) {res.end();}) 'Ben de sonra aramalı mıyım? –

+1

@vp_arth, isteği bir şekilde veya başka bir yanıt göndererek sonlandırmazsanız, bir sonraki rota/middleware/(error-) işleyicisine denetimi geçmek için 'next()' yi kullanabilirsiniz – robertklep

İlgili konular