【发布时间】:2018-04-18 14:11:00
【问题描述】:
在我的应用程序中,我使用 mongoose 和 mongodb,在一种情况下,我需要从另一个 Promise 调用 Promise,但 Promise 返回未定义,我的代码是
function first (num) {
return new Promise(function(resolve,reject){
if(num % 2 === 0){
resolve(num);
}
else{
reject('Error Happend');
}
})
}
function second(num){
first(num).then(function(res){
return res;
}).catch(function(err){
return err;
})
}
console.log(second(2))
<script src="https://cdn.jsdelivr.net/bluebird/latest/bluebird.js"></script>
在这种情况下,我将 2 传递给 second 函数,我希望它返回 2 但它返回未定义,我在 SF 上搜索并找到一些关于此的主题,但没有一个能解决我的问题。
【问题讨论】:
-
second没有return什么?你所有的return语句都在一些回调中。 -
@Bergi,谢谢,如何解决这个问题给
return -
你不能。 Promise 是异步的。你所能做的就是返回一个新的promise(通过调用
then或catch构造),然后在调用中使用second(2).then(console.log)。
标签: javascript mongoose promise bluebird