gpt4 book ai didi

javascript - 无论如何在javascript/jQuery中检测递归方法?

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:24:50 26 4
gpt4 key购买 nike

我正在处理一小部分计算代码。我需要确定何时在 javascript/jQuery 中发生递归,并且我需要终止该递归。

在 javascript/jQuery 中是否有支持此功能的 API?

最佳答案

您可以实现自己的递归保护。 jQuery 中没有内置任何东西可以原生支持防止递归。

function myFunc(arg) {
// if this function already executing and this is recursive call
// then just return (don't allow recursive call)
if (myFunc.in) {
return;
}

// set flag that we're in this function
myFunc.in = true;

// put your function's code here


// clear flag that we're in this function
myFunc.in = false;

}

myFunc.in = false;

您还可以将 bool 值变成一个计数器,并只允许递归到一定数量的级别。

仅供引用,因为 JS 是单线程的,所以只有当您的函数从不属于您的代码中进行某种回调时,这才应该是一个可能需要保护的问题。如果都是你自己的代码,那么你应该确保你自己的代码不会导致这种问题。


这里有一个更简单的版本,它在闭包中保护计数器,使其不能在函数外被操作:

 var myFunc = (function() {
var inCntr = 0;
return function(args) {
// protect against recursion
if (inCntr !== 0) {
return;
}
++inCntr;

try {

// put your function's code here

} finally {
--inCntr;
}

}
})();

注意:这使用了 try/finally block ,因此即使您的代码或您调用的任何代码抛出异常,计数器仍会被清除(因此它永远不会卡住)。

关于javascript - 无论如何在javascript/jQuery中检测递归方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21543069/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com