为什么当 promise 调用另一个 promise return 'undefined'

Why when promise calling another promise return 'undefined'

在我的应用程序中,我使用 mongoose 和 mongodb,在一个场景中我需要从另一个承诺调用承诺,但承诺 return 未定义,我的代码是

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 函数,我想要它 return 2 但它 return 未定义,我在 SF 上搜索并找到一些关于这个,但没有一个能解决我的问题。

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

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