如何将res.json作为回调函数传递?

时间:2016-09-17 11:46:59

标签: javascript express callback

我有一个带回调参数的函数。我用这种方式,它工作得很好: DB.last(user,(data) => res.json(data)); 我尝试将其重写为类似的内容,以使其更具可读性: DB.last(user,res.json);

其中DB.last是

  static last(user, callback) {
    let data = {name: user, registered: new Date()};
    callback(data);
  }

函数调用DB.last当然是在一个快速路由器脚本中。

我想我看到了两者之间的区别,但是将res.json作为回调参数传递给我的DB模块似乎是合乎逻辑的(我的意思是我可以在JS中传递一个函数)但是它赢了以这种方式工作。

我错过了什么?为什么要赢得这项工作呢?

1 个答案:

答案 0 :(得分:1)

您必须使用res.json.bind(res)

当您致电res.json()时,它会在res对象上执行(即this值在执行此功能时引用res。但是,当您将res.json作为回调参数传递,然后将其作为callback()调用时,会在调用this的上下文中的callback()对象上执行该操作

使用bind()方法强制在res上调用该函数。无论何时调用绑定函数,其this值始终为res