Tengo un evento, que puede dispararse solo. Intento que el código sea lo más eficiente posible, pero puede llegar a la cantidad máxima de llamadas en algunas circunstancias, que están fuera de mi control. No es una pila infinita y terminará en algún momento, pero a veces puede colapsar antes de que termine debido al límite.¿Cómo aumentar la cantidad máxima de llamadas en Javascript?
¿Aumentaré la cantidad de llamadas si configuro 2 detectores de eventos similares y divido el código? ¿O qué puedo hacer?
ACTUALIZACIÓN: Se trata de un evento de cambio de DOM (solo funciona con Webkit, por lo que no se preocupan por otros navegadores), que también puede modificar el DOM según algunas condiciones. Todavía no llegué a ese límite, pero teóricamente, potencialmente puede hacerlo. Todavía estoy optimizando el código para hacer menos manipulaciones de DOM como sea posible.
ACTUALIZACIÓN 2: Estoy incluyendo la muestra (no real) ejemplo:
document.addEventListener('DOMSubtreeModified', function(event){
this.applyPolicy(event);
}, true);
function applyPolicy(event){
if(typeof event != "undefined"){
event.stopPropagation();
event.stopImmediatePropagation();
}
if(!isButtonAllowed){
$('button:not(:disabled)').each(function(){
$(this).attr('disabled', true);
});
}
}
Esto es sólo un ejemplo de código, pero incluso en este caso, si usted tiene decir 100s de botones, la llamada la pila también estará en 100s. Tenga en cuenta que si usa $('button').attr('disabled', true);
, esto causará problemas en la pila de llamadas, porque jQuery intentará modificar el DOM infinitamente.
¿Quizás debería convertir su función recursiva en un bucle '' while''? No puedo imaginar que necesites el efecto secundario de centenares de miles de desencadenantes de eventos para disparar también alguna otra función ... –
Nunca llegó a ese límite, si no al codificar erróneamente un bucle infinito. Muestra el código. – gpasci
Respuesta corta: no hay un mecanismo (estándar) para hacer esto. La única opción entonces es alterar el código. –