未使用已定义的函数调用节点q promise处理程序

时间:2015-10-26 14:29:31

标签: javascript node.js q

我可能会在某些时候遗漏某些东西,但我不明白为什么这样做有效:

  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
  • express 2.14.4

1 个答案:

答案 0 :(得分:1)

两个代码之间存在很大差异。

在第一个代码中,res.status(200)db.isAuthorizedToInstall()结束后执行。

在第二个代码中,res.status(200)db.isAuthorizedToInstall()结束之前执行。

res.status(200)开始写回复的标头。因此,它可以阻止其他一些代码写入响应。

我认为函数是在第二个代码中调用的,但响应的行为却不一样。所以你可能还有其他一些代码打破这个。