【发布时间】:2013-08-03 13:51:03
【问题描述】:
我有一个 expressjs 应用程序,在特定的路由上,我调用了一个函数,该函数通过调用 res.json 以数据库文档作为参数来响应数据库中的用户。我使用基于承诺的库,我想内联回调,我将数据库文档放入响应中。但是当我这样做时程序失败了。有人可以解释为什么吗?我也想知道为什么对console.log 的内联调用确实有效。 res.json和console.log这两种方法有什么根本区别吗?
下面是一个例子,说明什么有效,什么无效。假设 getUserFromDatabase() 返回一个用户文档的承诺。
//This works
var getUser = function(req, res) {
getUserFromDatabase().then(function(doc) {
res.json(doc);
});
}
//This does not work (the server never responds to the request)
var getUserInline = function(req, res) {
getUserFromDatabase().then(res.json);
}
//This works (the object is printed to the console)
var printUser = function(req, res) {
getUserFromDatabase().then(console.log);
}
【问题讨论】:
标签: javascript node.js express promise