使用它吐出了一些錯誤處理代碼,這樣的express-generator
:爲什麼這個node.js回調沒有立即運行?
app.use('/', routes);
app.use('/users', users);
// catch 404 and forward to error handler
app.use(function(req, res, next) {
var err = new Error('Not Found');
err.status = 404;
next(err);
});
// error handlers
// development error handler
// will print stacktrace
if (app.get('env') === 'development') {
app.use(function(err, req, res, next) {
res.status(err.status || 500);
res.render('error', {
message: err.message,
error: err
});
});
}
在這個例子中,如果(無論出於何種原因)我的路線被破壞或者路由未找到或什麼的,代碼回落在第二個代碼塊中拋出一個404。在第二個代碼塊(404處理程序)開始執行後,第三個代碼塊(500處理程序)如何不立即執行?
我認爲這樣的node.js回調的工作是函數開始執行,並繼續在後臺執行,那麼接下來的回調開始在同一時間執行。但顯然,我對同步回調的工作方式感到困惑。在運行500錯誤處理程序之前,上述代碼是否知道要「等待」404處理程序代碼完成執行?
@Jakobud - 您是否獲得足夠的解釋來回答/解釋您的問題,還是仍然存在你需要幫助嗎? – jfriend00 2015-02-27 04:17:36