javascript - 为什么当promise调用另一个promise时返回 'undefined'

标签 javascript mongoose promise bluebird

在我的应用程序中,我使用 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(2) 的返回值,但 second 函数中没有 return 语句,因此它会始终返回未定义

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

关于javascript - 为什么当promise调用另一个promise时返回 'undefined',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47136520/

相关文章:

javascript - 如何获得 SVG 文本元素的紧密边界框

javascript - 将 DIV 元素弹出窗口居中

c# - 没有回发的事件

javascript - 如何在不知道mongodb中的父键的情况下查找特定的嵌套对象

javascript - 将 promise 转换为异步/等待 - Javascript

javascript - 如果元素在屏幕上可见,如何检查柏树?

javascript - Mongoose 在通过 Browserify 加载时没有连接方法

javascript - 编写 Google Cloud Functions 时是否应该在 'finally' block 中使用 response.send() ?

javascript - 需要帮助将回调转换为 Promise

node.js - Mongoose 按子值排序