Javascript вызывать функцию или встроенный код? - PullRequest
1 голос
/ 22 февраля 2012

У меня был странный опыт.После успеха вызова ajax, который я выполнял в DOM, много вычислений и обработки, все было настолько гладко, насколько это возможно.Затем я переместил весь код, написанный в успехе, в отдельную функцию javascript, которая, в свою очередь, была вызвана в части успеха ajax.Теперь я вижу отставание в 1-2 секунды при выполнении функции.Возможно ли, что встроенный код быстрее, чем вызов функции?

РЕДАКТИРОВАТЬ Пример кода:

$.ajax({
        url: '/apps/project/controller/load_data',
        method: 'get',
        dataType: "json",
        data: {},
        success: function(data) {
            //Parse JSON (Huge Data) and insert into DOM
}});

Второй подход, который я сделал

$.ajax({
        url: '/apps/project/controller/load_data',
        method: 'get',
        dataType: "json",
        data: {},
        success: function(data) {
            populate_timeline(data)
}});

function populate_timeline(json){
//Parse JSON (Huge Data) and insert into DOM
}

1 Ответ

2 голосов
/ 22 февраля 2012

Одним из предложений будет не усугублять ваши проблемы, используя анонимный проход. Вы просто должны быть в состоянии сделать success: populate_timeline, поскольку функции являются объектами первого порядка в JavaScript. Возможно, вам придется убедиться, что populate_timeline объявлено до того, как на него ссылаются в ajax, я не знаю, как весь ваш код выложен или вызван.

Недавно я оптимизировал скрипт и обнаружил, что встраивание одного вызова функции действительно очень мало влияет на производительность. Это был код, который выполнял некоторые анимации холста с довольно коротким временем setInterval, поэтому вызов функции выполнялся много раз в секунду.

Вы вернулись и убедились, что перемещение ранее встроенного кода в его собственную функцию - это то, что вы сделали only ? Легко вносить другие изменения, не думая об этом. Также, если вы запускаете этот код на своем локальном компьютере в целях разработки, убедитесь, что это не просто медленный вызов ajax, а вызов функции. Может быть, у вас сейчас запущен какой-то другой процесс с высокой нагрузкой на процессор, который раньше не работал и замедляет ответ ajax?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...