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

标签 javascript recursion async-await

这是我的场景:在我的函数中,我想等待另一个函数执行一些递归操作并最终返回结果。但我刚刚得到了未定义的结果。

请参阅 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 Finish”的日志,但我得到“3 2 1 0 undefined”。

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

最佳答案

recursiveFunc(index) 调用之前缺少 return 关键字:

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); 
})

你最终得到了undefined,因为在JavaScript中,如果你没有指定返回什么,函数默认返回undefined,这就是你的代码中发生的情况。代码

关于javascript - 等待递归函数时获取未定义的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58621354/

相关文章:

javascript - Angular : Async push to recursively generated array

Scala 递归函数

c# - 如何轻松支持重复的异步/同步方法?

javascript - async/await 链何时停止?

javascript - 测试 redux 表单失败 - typeError formProps.handleSubmit 不是函数

javascript - 什么会导致浏览器控制台出现 "jsf is not defined"错误

c# - 向 Spring.Net 中的递归方法注入(inject)建议?

javascript - 我怎样才能让底部的 console.log 等到它全部完成,然后告诉我答案而不是等待?

javascript - 如何在给定专辑的情况下生成 Bandcamp 播放器嵌入代码?

javascript - Object.Reduce 未返回正确的值