递归的那些?

时间:2015-06-04 23:14:44

标签: javascript performance recursion promise

我正在尝试实现一种模式,在这种模式中,我调用了一个可能运行了几个小时的无穷无尽的递归循环(基于Promise的链接)(我正在玩一个小的lovefield项目)。

基本上我正在尝试的是:

runMyRoutine() {
    return doThis().then(function() {
        return doThat().then(function() {
            return runMyRoutine();
        });
    });
}

在这个问题上是否有一些最佳实践可用(在某种情况下使用某种指南或特殊API?)

就可行性而言,我认为应该可以保留上述结构,但不存在内存问题吗?

祝你好运, lt1

1 个答案:

答案 0 :(得分:0)

你无法逃脱真正的无尽的递归。你会在某个时刻出现堆栈溢出。

function runMyRoutine() {
  runMyRoutine();  // call stack overflows here at some point
}

但是,在您的情况下,实际上并没有无限递归。如果doThis()设置正确,那么最后一个runMyRoutine()实际上是在它自己的调用堆栈上(相同的堆栈,最后调用函数包装它)。它与原始背景脱节。