【发布时间】:2015-05-16 22:45:58
【问题描述】:
我仍在学习 node.js 的技巧,只是想弄清楚我应该推迟什么以及应该执行什么。
我知道通常还有其他与此主题相关的问题,但恐怕没有更相关的例子,我很难“明白”。
我的一般理解是,如果正在执行的代码不平凡,那么异步它可能是一个好主意,以避免它阻碍其他人的会话。显然不止这些,而且回调被提到了很多,而且我不是 100% 说明你为什么不同步所有内容。我还有一些路要走。
下面是我在 express.js 应用中编写的一些基本代码:
app.get('/directory', function(req, res) {
process.nextTick(function() {
Item.
find().
sort( 'date-modified' ).
exec( function ( err, items ){
if ( err ) {
return next( err );
}
res.render('directory.ejs', {
items : items
});
});
});
});
我在这里使用process.nextTick() 是否正确?我的理由是,因为它是一个数据库调用,所以必须完成一些实际的工作,这可能会减慢活动会话的速度。还是说错了?
其次,我有一种感觉,如果我推迟数据库查询,那么它应该在回调中,并且在接收到回调响应的情况下,我应该同步进行实际的页面呈现。我只是假设这是因为它似乎是我见过的一些示例中更常见的格式 - 如果这是一个正确的假设,任何人都可以解释为什么会出现这种情况吗?
谢谢!
【问题讨论】:
标签: node.js mongodb asynchronous express mongoose