【问题标题】:await does not gettng return valueawait 没有得到返回值
【发布时间】:2020-12-27 16:48:32
【问题描述】:

我有异步功能

async function getEltern(id){
  var eltern = await getTreeById(id);
  var description = eltern.Descriptions.CategoryDescription;
  description = (description.length > 1) ? description[0].Description: description.Description;
  if (description == 'Test1' || description == 'Test2'){      
    return eltern;
  }
  eltern = await getEltern(eltern.CategoryId);
}

但是当我调用函数时

var eltern = await getEltern(parentNode.CategoryId)

我得到了变量 eltern undefined。但它在函数中返回一个对象。

谁能帮助我的代码出了什么问题?

【问题讨论】:

  • 需要一些关于getEltern()函数的细节
  • 您的函数要么在分配之前返回eltern(getTreeById 可能返回undefined?),要么在if 语句的条件为假时永远不会返回。
  • @KhanhLeTran getEltern 函数就在那里,它递归地调用自己。
  • getEltern() 在 if 语句不正确的情况下不返回任何内容
  • @wapt49 在 eltern = await getEltern(eltern.CategoryId); 从您的 getEltern 函数之后,您不会从您的函数中返回任何内容,因此在这种情况下它会返回 undefined

标签: javascript node.js async-await


【解决方案1】:

如果是递归函数,则需要返回所有大小写。使用您的代码,我可以看到您有 2 个案例。如果 if 条件被接受,它将为 case 1 返回 1 个值,在 case 2(对应于 else 条件)中,您将调用递归,所以:

改为:

async function getEltern(id){
  var eltern = await getTreeById(id);
  var description = eltern.Descriptions.CategoryDescription;
  description = (description.length > 1) ? description[0].Description: description.Description;
  if (description == 'Test1' || description == 'Test2'){      
    return eltern;
  }
  return await getEltern(eltern.CategoryId);
}

【讨论】:

    猜你喜欢
    • 2010-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-24
    • 1970-01-01
    • 2017-01-19
    • 2020-02-04
    • 2020-06-15
    相关资源
    最近更新 更多