我正在使用 Express v3.4.4。当我尝试这样做时:

var cb = res.send; 
cb(result); 

我得到一个错误:

   ...\node_modules\express\lib\response.js:84 
   var HEAD = 'HEAD' == req.method; 
   TypeError: Cannot read property 'method' of undefined 

在代码中,工作一个:

    workflow.on('someEvent', function () { 
      res.send({ 
          error: null, 
          result: 'Result' 
        }); 
    });  

不工作:

    workflow.on('someEvent', function () { 
      var cb = res.send;  
      cb({ 
          error: null, 
          result: 'Result' 
      }); 
    });     

请您参考如下方法:

send 实际上是对象res 的函数。它尝试使用 res 对象中的其他数据。但是,当你这样做的时候

var cb = res.send; 
cb({...}); 

您只是在使用函数对象 send 而没有引用 res 对象。这就是它不起作用的原因。


如果你需要做类似的事情,那么将 res 对象绑定(bind)到 send 函数,就像这样

var cb = res.send.bind(res); 

现在

cb({...}); 

也会起作用。因为 res 绑定(bind)到 send 函数对象,结果函数存储在 cb 中。

bind 函数实际上是Function.prototype.bind


评论关闭
IT虾米网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!