节点asynchronous路由代码

我使用快车4.0使用节点。 在互联网上(包括文档),我找不到在路由中embeddedasynchronous代码的任何东西。

使用中间件很简单:

app.use('/something', function (req, res, next) { doSomethingAsync(function(err, probablySomethingElse) { // probably some error checking next(); }); }); 

路线上的问题是没有nextcallback,那么如何expression知道何时移动到下一个工作?

 app.get('/something', function (req, res) { res.render('someTemplate'); // no next() here, but it still works }); 

如果我不得不猜测,我会说,在上述函数退出后,快速移动到下一个任务。 但出于好奇,我已经推出了以下代码…

 app.get('/something', function (req, res, next) { console.log(next); }); 

…实际上有一些nextcallback通过。 那么这里发生了什么? 它在幕后如何工作? 我怎样才能把asynchronous代码呢?

Express将等到您调用res.renderclosures套接字。 这意味着你可以将res.render传递给一个需要X秒执行的callbackres.render ,并且所有东西都可以工作。

next允许你去到下一个映射你的值的路线,你可以在这里find一个非常好的解释: 在Express中使用的参数“next”是什么?

但根据你在这里问。 在res对象上调用render()的时候,数据将被发送,套接字closures。