2015-02-11 37 views
1

我對next()如何在Node.js和Express中間件中工作感到困惑。誰在Express中間件中提供next()函數?

還有一些關於中間件工程的其他問題,for example here,但我正在尋找不同的答案。

糾纏我的主要問題是是誰提供next()函數?

例如,在我的標準產生express應用程序,我給這個代碼:

// catch 404 and forward to error handler 
app.use(function(req, res, next) { 
    var err = new Error('Not Found'); 
    err.status = 404; 
    next(err); 
}); 

但誰調用這個函數,什麼是它提供的next()的性質是什麼?我怎麼知道next()會是什麼樣子?我不知道next()會做什麼。

+0

這只是一個回調。當你執行'next'時,你明確告訴你在這裏完成了,它應該繼續下一個中間件,或者處理任何傳入的錯誤。 – 2015-02-11 21:46:45

+0

*「誰提供下一個()函數」* Expressjs是。它在那裏,以便您可以指示中間件何時執行完畢。 – 2015-02-11 21:49:04

+0

@KevinB那麼爲什麼你不通過下一個中間件旁邊的回調,比如'next(req,res,myNextFunc);'? – CodyBugstein 2015-02-11 21:59:28

回答

2

Express應用程序本質上是一系列中間件調用。

中間件是與訪問請求對象(REQ),則 響應對象(RES),並且行中的下一個中間件在Express應用程序的 請求響應週期,通過 可變通常表示一個函數命名下一個。

如上所述,Expressjs提供了下一個回調函數。接下來只是調用流中下一個中間件的一種方法。

對於很多例子,請參閱Express的Using middleware

相關問題