为什么当承诺呼吁另一个承诺返回' undefined'

时间:2017-11-06 11:57:10

标签: javascript mongoose promise bluebird

在我的应用程序中我使用mongoose和mongodb,在一个场景中我需要从另一个promise中调用promise,但是promise返回undefined,我的代码是



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>
&#13;
&#13;
&#13;

在这种情况下,我将2传递给second函数,我希望它返回2,但它返回undefined,我在SF上搜索并找到一些关于此的主题,但它们没有解决我的问题。 / p>

1 个答案:

答案 0 :(得分:2)

您正在记录second(2)的返回值,但second函数中没有return语句,因此它将始终返回undefined

请注意,传递给thencatch的函数表达式(具有return语句的函数表达式本身并不是second函数)。