回调如何在使用 Javascript 的递归调用中工作?
How do callbacks work in a recursive call using Javascript?
我想知道 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 回调将在递归的 return 之后执行。
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 如何处理递归调用中的回调,回调是在每次递归调用时直接推入队列还是在调用以基本情况解决后推入队列?
测试用例代码
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 回调将在递归的 return 之后执行。
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