Javascript 如何使用承诺结果的响应处理程序

Javascript 如何使用承诺结果的响应处理程序,javascript,node.js,promise,httpresponse,Javascript,Node.js,Promise,Httpresponse,我有两个方法,它们有一个共同的响应逻辑,我试图将该响应逻辑提取到另一个方法并链接到所有承诺,但没有抛出错误: 原始方法: method1: function (req, res) { db.getData(req) .then(data => { res.status(200).send({ status: 200, data: data }) }) .catch(error => { res.sta

我有两个方法,它们有一个共同的响应逻辑,我试图将该响应逻辑提取到另一个方法并链接到所有承诺,但没有抛出错误:

原始方法:

  method1: function (req, res) {
    db.getData(req)
      .then(data => {
          res.status(200).send({ status: 200, data: data })
      })
      .catch(error => {
        res.status(500).send({ status: 500, statusText: error.message })
      })
  },
  method2: function (req, res) {
    db.getData2(req)
      .then(data => {
          res.status(200).send({ status: 200, data: data })
      })
      .catch(error => {
        res.status(500).send({ status: 500, statusText: error.message })
      })
  },
Reference Error: responseMethod is not defined
我想做什么? (提取对另一种常用方法的响应承诺)

错误:

  method1: function (req, res) {
    db.getData(req)
      .then(data => {
          res.status(200).send({ status: 200, data: data })
      })
      .catch(error => {
        res.status(500).send({ status: 500, statusText: error.message })
      })
  },
  method2: function (req, res) {
    db.getData2(req)
      .then(data => {
          res.status(200).send({ status: 200, data: data })
      })
      .catch(error => {
        res.status(500).send({ status: 500, statusText: error.message })
      })
  },
Reference Error: responseMethod is not defined

我发现了如何修复此场景:

回答如下:

  method1: function (req, res) {
    db.getData(req)
      .then(data => {
          res.status(200).send({ status: 200, data: data })
      })
      .catch(error => {
        res.status(500).send({ status: 500, statusText: error.message })
      })
  },
  method2: function (req, res) {
    db.getData2(req)
      .then(data => {
          res.status(200).send({ status: 200, data: data })
      })
      .catch(error => {
        res.status(500).send({ status: 500, statusText: error.message })
      })
  },
Reference Error: responseMethod is not defined
将#1:res作为responseMethod中的一个参数

修复#2:在响应方法中返回承诺

引用错误:未定义responseMethod

您的错误与javascript中的
this
关键字有关,而不是任何异步内容

const containerObj={
响应方法:函数(){
返回'ok'//简化测试
},
方法1:函数(){
返回this.responseMethod()//成功,因为它引用了“this”对象
},
方法2:函数(){
return responseMethod()//失败,因为您需要引用“this”
},
}
/*测验*/
console.log(containerObj.method1())//应该成功

console.log(containerObj.method2())//应该失败
您看到的错误是试图字符串化对象,与异步性无关(不过,请注意,您应该返回
Promises
@CertainPerformance我知道,但我不明白为什么会出现此错误消息,因此我需要在这种情况下找到解决方案,您知道如何解决吗?首先找出引发错误的行,然后查看该行的方法和该方法使用的对象-听起来像是s循环。@CertainPerformance ok,我确定它是:ReferenceError:responseMethod在调用responseMethodOk时未定义,这是一个完全不同的错误。您的
responseMethod
是父对象的属性,而不是独立函数,因此
responseMethod(…
不起作用。不知道调用上下文,但请尝试
此.responseMethod(…