Javascript 为什么在承诺调用另一个承诺返回时';未定义';
在我的应用程序中,我使用mongoose和mongodb,在一个场景中,我需要从另一个promise调用promise,但promise返回未定义,我的代码是Javascript 为什么在承诺调用另一个承诺返回时';未定义';,javascript,mongoose,promise,bluebird,Javascript,Mongoose,Promise,Bluebird,在我的应用程序中,我使用mongoose和mongodb,在一个场景中,我需要从另一个promise调用promise,但promise返回未定义,我的代码是 函数优先(num){ 返回新承诺(功能(解决、拒绝){ 如果(数值%2==0){ 解析(num); } 否则{ 拒绝(“发生错误”); } }) } 函数秒(num){ 首先(num)。然后(函数(res){ 返回res; }).catch(函数(err){ 返回错误; }) } console.log(第二个(2)) 您正在记录sec
函数优先(num){
返回新承诺(功能(解决、拒绝){
如果(数值%2==0){
解析(num);
}
否则{
拒绝(“发生错误”);
}
})
}
函数秒(num){
首先(num)。然后(函数(res){
返回res;
}).catch(函数(err){
返回错误;
})
}
console.log(第二个(2))
您正在记录second(2)
的返回值,但是second
函数中没有return
语句,因此它将始终返回未定义的
请注意,传递给然后
和捕获
的函数表达式(具有返回
语句的函数表达式不是秒
函数本身)。您正在记录秒(2)
的返回值,但秒
函数中没有返回
语句,因此它总是返回未定义的
请注意,传递给然后
和catch
的函数表达式(具有return
语句的函数表达式不是second
函数本身)。second
不会返回任何内容?您所有的return
语句都在一些回调中。@Bergi,谢谢,如何解决这个问题到return
您不能。承诺是异步的。您所能做的就是返回一个新的承诺(通过调用then
或catch
构建),然后使用second(2)。然后在调用中使用(console.log)
。second
不会返回任何内容吗?您所有的return
语句都在一些回调中。@Bergi,谢谢,如何解决这个问题到return
您不能。承诺是异步的。您所能做的就是返回一个新的承诺(通过调用then
或catch
构建),然后在调用中使用second(2)。然后(console.log)
。