使用它吐出了一些错误处理代码,这样的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