【问题标题】:Why when promise calling another promise return 'undefined'为什么当 promise 调用另一个 promise 时返回 'undefined'
【发布时间】: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(通过调用thencatch构造),然后在调用中使用second(2).then(console.log)

标签: javascript mongoose promise bluebird


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-11-28
    • 2021-09-16
    • 2014-05-12
    • 2021-01-17
    • 2018-06-01
    • 2017-11-11
    • 2019-05-28
    相关资源
    最近更新 更多