【问题标题】:How do callbacks work in a recursive call using Javascript?回调如何在使用 Javascript 的递归调用中工作?
【发布时间】:2015-11-02 19:18:19
【问题描述】:

我想知道 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);

【问题讨论】:

  • 您可以通过简单地在控制台中运行代码来测试和验证这一点。只要不运行异步代码,代码就会按顺序执行。

标签: javascript recursion callback


【解决方案1】:

递归调用的处理方式与任何其他编程语言相同。 代码将像您在数组上迭代并在循环内调用函数一样执行。 如果您在调用 enums 函数后使用 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

【讨论】:

    猜你喜欢
    • 2019-03-05
    • 1970-01-01
    • 2011-03-18
    • 2022-11-22
    • 2017-01-18
    • 1970-01-01
    • 1970-01-01
    • 2020-11-18
    • 1970-01-01
    相关资源
    最近更新 更多