当我的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})
})
});
答案 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
})
}