javascript - 回调如何在使用 Javascript 的递归调用中工作?

标签 javascript recursion callback

我想知道 Javascript 如何处理递归调用中的回调,回调是在每次递归调用时直接插入队列,还是在调用以基本情况解决后插入队列?

测试用例代码

function enums(start,end,callback) {
  callback(start);
  if (end == 1)
    return 1;
  else{
    return enums(start + 1, end - 1, callback);
  }
}

var callback = function (number){
   console.log(number);
}
enums(1,10,callback);

最佳答案

递归调用的处理方式与任何其他编程语言相同。 代码将被执行,就像您在数组上迭代并在循环内调用函数一样。 如果您在调用枚举函数后使用 setTimeout 跨越一个定时器,延迟为 0 毫秒,您会注意到 setTimeout 回调将在递归返回后执行。

function enums(start,end,callback) {
   callback(start);
   if (end == 1)
      return 1;
   else{
      return enums(start + 1, end - 1, callback);
   }
}

var callback = function (number){
  console.log(number);
}
enums(1,10,callback);
setTimeout(function(){ console.log("Rick"); }, 0);

输出应该是:1..10 然后是 Rick

关于javascript - 回调如何在使用 Javascript 的递归调用中工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31926959/

相关文章:

javascript - 不明白 Yarn check 警告

java - Mandelbrot 集的视觉表示

javascript - 自执行函数中的参数是否必要?

javascript - Canvas toDataURL() 函数完成后执行函数

javascript - 无法在 Angular 的 Hashlocationstrategy 中获取查询参数

php - 使用 PHP 将 css/js 文件分配给 html 文档

recursion - 请引导我完成这个 "Erlang Programming"递归示例

java - 递归数字打印

Android 开发 - 回调 URL 无效... (0_o)

javascript - 如何基于具有相同选项值的另一个选择元素禁用选择元素中的选项?