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

时间:2015-08-10 18:48:51

标签: 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);

1 个答案:

答案 0 :(得分:2)

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