【问题标题】:How to pass res.json as a callback function?如何将 res.json 作为回调函数传递?
【发布时间】:2016-09-17 11:46:58
【问题描述】:

我有一个带有回调参数的函数。我以这种方式使用它,它工作得很好: 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 中传递一个函数),但这不起作用方式。

我错过了什么?为什么这不起作用?

【问题讨论】:

    标签: javascript express callback


    【解决方案1】:

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

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

    使用bind() 方法会强制在res 上调用函数。每当您调用绑定函数时,其this 值将始终为res

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-02-22
      • 2021-02-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-12
      • 2014-06-21
      相关资源
      最近更新 更多