等待递归函数时获取未定义的结果

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了等待递归函数时获取未定义的结果相关的知识,希望对你有一定的参考价值。

这是我的情况:在我的函数中,我想等待另一个函数执行某些递归操作,最后返回结果。但是我只是得到了不确定的结果。

请参见此处找到fiddle中的代码。

我的代码:

let count = async() => 
  let recursiveFunc = (index) => 
    console.log(index);
    if (index === 0) 
      return "Finish";
     else 
      index--;
      recursiveFunc(index);
    
  
  return recursiveFunc(3);
;

count().then(result => 
  console.log(result);
)

我希望获得“ 3 2 1 0完成”的日志,但得到“ 3 2 1 0未定义”。

如果发现我的错误,请给我一些指导。谢谢。

答案

return通话之前您缺少recursiveFunc(index)关键字:

let count = async ()=>

    let recursiveFunc = (index) =>
      console.log(index);
    if(index === 0)
      return "Finish";
    else
      index--;
      return recursiveFunc(index); // <-- here, `return`
    
  
    return recursiveFunc(3);
;

count().then(result => 
    console.log(result); 
)

以上是关于等待递归函数时获取未定义的结果的主要内容,如果未能解决你的问题,请参考以下文章

Promise mysql返回未定义,如何让函数等待结果

无法读取未定义(递归函数)的属性“符号(Symbol.iterator)”

递归函数返回未定义

递归函数返回未定义

拾遗:关于“尾递归”——tail recursive

UE4定义递归函数