我正在尝试实现一种模式,在这种模式中,我调用了一个可能运行了几个小时的无穷无尽的递归循环(基于Promise的链接)(我正在玩一个小的lovefield项目)。
基本上我正在尝试的是:
runMyRoutine() {
return doThis().then(function() {
return doThat().then(function() {
return runMyRoutine();
});
});
}
在这个问题上是否有一些最佳实践可用(在某种情况下使用某种指南或特殊API?)
就可行性而言,我认为应该可以保留上述结构,但不存在内存问题吗?
祝你好运, lt1
答案 0 :(得分:0)
你无法逃脱真正的无尽的递归。你会在某个时刻出现堆栈溢出。
function runMyRoutine() {
runMyRoutine(); // call stack overflows here at some point
}
但是,在您的情况下,实际上并没有无限递归。如果doThis()
设置正确,那么最后一个runMyRoutine()
实际上是在它自己的调用堆栈上(相同的堆栈,最后调用函数包装它)。它与原始背景脱节。