【问题标题】:Node q promise handler not called with an already defined function [duplicate]未使用已定义的函数调用节点 q 承诺处理程序 [重复]
【发布时间】:2026-01-12 07:00:02
【问题描述】:

我可能在某些时候遗漏了一些东西,但我不太明白为什么这是有效的:

  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

【问题讨论】:

  • 是的,好像是重复的

标签: javascript node.js q


【解决方案1】:

这两个代码有很大的不同。

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

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

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

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

【讨论】: