节点 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 函数;或者函数没有被调用。

我正在使用:

两个代码有很大的不同。

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

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

res.status(200) 开始写入响应的 headers。所以它可以防止一些其他代码写在响应中。

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