节点 q 承诺处理程序未使用已定义的函数调用
Node q promise handler not called with an already defined function
我可能在某些时候遗漏了一些东西,但我不太明白为什么会这样:
app.post('/check-setup-auth', function(req, res) {
db.isAuthorizedToInstall()
.then(function(data) {
res.status(200).json(data);
});
});
而这不是
app.post('/check-setup-auth', function(req, res) {
db.isAuthorizedToInstall()
.then(res.status(200).json);
});
我原以为会产生完全相同的结果,但不知何故,promise 的解析数据没有传递给 res.json 函数;或者函数没有被调用。
我正在使用:
- Linux 3.19.0-31-generic #36-Ubuntu x86_64 x86_64 x86_64 GNU/Linux
- nodejs v4.1.1
- 快递 2.14.4
两个代码有很大的不同。
在第一个代码中,res.status(200)
在db.isAuthorizedToInstall()
结束后执行。
在第二个代码中,res.status(200)
在db.isAuthorizedToInstall()
结束之前执行。
res.status(200)
开始写入响应的 headers。所以它可以防止一些其他代码写在响应中。
我认为在第二个代码中调用了函数,但响应的行为不一样。所以你可能有一些其他的代码打破了这个。
我可能在某些时候遗漏了一些东西,但我不太明白为什么会这样:
app.post('/check-setup-auth', function(req, res) {
db.isAuthorizedToInstall()
.then(function(data) {
res.status(200).json(data);
});
});
而这不是
app.post('/check-setup-auth', function(req, res) {
db.isAuthorizedToInstall()
.then(res.status(200).json);
});
我原以为会产生完全相同的结果,但不知何故,promise 的解析数据没有传递给 res.json 函数;或者函数没有被调用。
我正在使用:
- Linux 3.19.0-31-generic #36-Ubuntu x86_64 x86_64 x86_64 GNU/Linux
- nodejs v4.1.1
- 快递 2.14.4
两个代码有很大的不同。
在第一个代码中,res.status(200)
在db.isAuthorizedToInstall()
结束后执行。
在第二个代码中,res.status(200)
在db.isAuthorizedToInstall()
结束之前执行。
res.status(200)
开始写入响应的 headers。所以它可以防止一些其他代码写在响应中。
我认为在第二个代码中调用了函数,但响应的行为不一样。所以你可能有一些其他的代码打破了这个。