[Closure Compiler] Как запретить инлайнить функцию, которая вызывается из setTimeout?
Здравствуйте!
Сейчас разбираюсь с Google Closure Compiler http://code.google.com/p/closure-compiler/. http://javascript.ru/optimize/google-closure-compiler И наткнулся на такую проблему. Основной цикл JavaScript-программы организуется через функцию mainLoop() примерно следующего содержания: Код:
// Основной цикл Проблема в том, что Closure Compiler удаляет весь код функции mainLoop() и делает inline-вставку всего кода этой функции на месте, где происходит вызов. В результате, вызов setTimeout("mainLoop()",1); не работает, так как функции нет. И как предотварить это преобразование функкции в inline-код я не могу понять. От прописывания в екстерны имени mainLoop() никакого толку нет - функция не переименовывается, она именно исчезает. Пробовал не заключать в кавычки имя "mainLoop()". Тогда функция не инлайнится, то есть вроде как Closure Compiler видит, что функция использует возов свебя. Но ни Opera 11, ни Firefox 3.6 не понимают такой записи. Что делать? |
setTimeout(mainLoop,1); |
|
С Closure Compiler не работатал, но попробуйте вместо
setTimeout("mainLoop()",refresh_rate); написать более грамотный вариант: setTimeout(function() {mainLoop()}, refresh_rate); |
Заработало, что-то не заметил я что скобки не нужны.
|
Часовой пояс GMT +3, время: 22:03. |