javascript调用递归函数时堆栈何时耗尽?
我知道这个函数会出错,因为调用self函数时堆栈会耗尽javascript调用递归函数时堆栈何时耗尽?,javascript,recursion,Javascript,Recursion,我知道这个函数会出错,因为调用self函数时堆栈会耗尽 function loop() { loop(); } 我想做一个回调函数,调用self函数 第一: var load_function = new Promise(function(resolve, reject) { resolve() }); function loop() { load_function.then( function() { loop(); }).catch
function loop() {
loop();
}
我想做一个回调函数,调用self函数
第一:
var load_function = new Promise(function(resolve, reject) {
resolve()
});
function loop() {
load_function.then(
function() {
loop();
}).catch(
function() {
loop();
});
}
第二:
function loop() {
setTimeout(loop, 3);
}
这些函数不会产生错误
在无限循环调用中使用这些函数安全吗?这两个函数都涉及在当前调用堆栈清空后排队进入调用堆栈的回调,而不是无限期地添加到调用堆栈中。请注意,由于
load\u function
是一个单承诺,而不是一个函数,因此循环的结果将是调用then()
一次又一次地重复同一个承诺。承诺只能解决一次。若递归调用任何函数,这将在一段时间后自动停止。我认为当函数循环结束时,堆栈可能会被清空,尽管回调离开了