Как увеличить максимальный стек вызовов в Javascript?

У меня есть событие, которое может загореться само. Я стараюсь сделать код как можно более эффективным, но в некоторых случаях, которые я не могу контролировать, он может достигать максимального стека вызовов. Это не бесконечный стек, и в какой-то момент он закончится, но иногда он может аварийно завершиться до завершения из-за ограничения.

Увеличу ли я количество стека вызовов, если настрою 2 одинаковых прослушивателя событий и разделю код? Или что я могу сделать?

ОБНОВЛЕНИЕ: это событие изменения DOM (работает только с Webkit, так что не беспокойтесь о других браузерах), которое также может изменять DOM на основе некоторых условий. Я еще не достиг этого предела, но теоретически это возможно.Я все еще оптимизирую код, чтобы сделать как можно меньше манипуляций с DOM.

ОБНОВЛЕНИЕ 2: я включаю образец (не реальный) пример:

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);

        });
    }
}

Это всего лишь пример кода, но даже в этом случае, если у вас есть, скажем, 100 кнопок, стек вызовов будет в 100 тоже. Обратите внимание, что если вы используете $('button').attr('disabled', true);, это вызовет проблему со стеком вызовов, потому что jQuery будет бесконечно пытаться модифицировать DOM.

10
задан Sherzod 23 March 2012 в 17:49
поделиться