Получить неопределенный результат в ожидании рекурсивной функции - PullRequest
0 голосов
/ 30 октября 2019

Вот мой сценарий: в моей функции я хочу дождаться другой функции для выполнения некоторой рекурсивной операции и вернуть результат в конце. Но я только что получил неопределенный результат.

Пожалуйста, посмотрите код в 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 undefined».

Пожалуйста, дайте мне инструкцию, если вы обнаружите мою ошибку. Спасибо.

1 Ответ

1 голос
/ 30 октября 2019

Вам не хватает 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); 
})

В итоге вы получили undefined, потому что в JavaScript, если вы не указываете, что возвращать, функция возвращает undefined по умолчанию, и это то, что происходилов вашем коде

...