TypeError:无法读取未定义(Promise)(node.js)的属性“ then”

时间:2019-05-13 14:22:55

标签: javascript node.js promise

当我的API调用返回承诺的addSub()时,内部的Promise可以将数据返回到外部的Promise,但是在提供以下输出时,外部的Promise无法将数据返回给AP。

  

a + b:9

     

addSub数据:9

     

pro:承诺{8}

     

TypeError:无法读取未定义的属性'then'

function add(a, b){
  console.log("a+b: ",a+b)
  return new Promise((resolve, reject) => {
    resolve(a+b)
    })
}

function addSub(){
  add(4,5)
    .then((data) => {
        console.log("addSub data: ", data)
        var pro = new Promise((resolve, reject) => {
          resolve(data - 1)
        })
        console.log("pro: ",pro)
        return pro
    })
}

app.get('/promise', function (req, res){
    addSub()
    .then((data) => {
        console.log("final res: ", data)
        res.send({"data": data})
    })
});

2 个答案:

答案 0 :(得分:3)

您必须在add(4,5)之前添加退货单:

...    
function addSub(){
            return add(4,5)
            .then((data) => {
            ...

function add(a, b){
    console.log("a+b: ",a+b)
    return new Promise((resolve, reject) => {
        resolve(a+b)
    })
}
function addSub(){
    return add(4,5)
    .then((data) => {
        console.log("addSub data: ", data)
        var pro = new Promise((resolve, reject) => {
            resolve(data - 1)
        })
        console.log("pro: ",pro)
        return pro
    })
}

addSub()
  .then((data) => {
      console.log("final res: ", data)
      res.send({"data": data})
  })

答案 1 :(得分:0)

只需在addSub函数内部的调用add函数之前放置一个return语句

function addSub() {
    return add(4, 5)
        .then((data) => {
            console.log("addSub data: ", data)
            var pro = new Promise((resolve, reject) => {
                resolve(data - 1)
            })
            console.log("pro: ", pro)
            return pro
        })
}