Rol*_*rov 1 javascript paradigms loops function
我遇到了一个函数,它的setTimeout内部超时呈指数级增长(timeout *= 2).
let timeout = 10000
function foo() {
// doSomething without breaking, returning
setTimeout(foo, timeout)
timeout *= 2;
}
foo()
Run Code Online (Sandbox Code Playgroud)
看起来这不应该是一个问题,并且直觉上感觉setInterval有点已经做了同样的事情(有一个无限循环,直到它被取消,如果有的话),然而,我的问题在于方法本身.
这不是递归函数调用.调用setTimeout将导致foo稍后由JavaScript事件循环调用.
此代码不会导致堆栈溢出或任何此类问题.它应该是完全安全的.
为了理解这是如何工作的,我建议阅读JS事件循环和微任务.
| 归档时间: |
|
| 查看次数: |
108 次 |
| 最近记录: |