Требуется много времени для загрузки selectBox - PullRequest
0 голосов
/ 19 ноября 2018

Ниже фрагмента кода, цикл " for " занимает много времени, чтобы загрузить данные в поле выбора, кто-нибудь может мне помочь?даже я использую Jquery 1.3.2, который является новым для меня.

здесь names.response.length - 120000 записей.

function personNameChangedCallback(names){
 if(names.response.length > 0){
    var options = [];

   for (var i = 0; i< names.response.length; i++) {
        options.push('<option>'+ names.response[i] +'</option>');
    }
 jQuery('[id=personNameSelected]').append(options.join(''));
}

1 Ответ

0 голосов
/ 30 ноября 2018

Что может помочь, так это избегать использования массива для хранения параметров и вместо этого непосредственно объединять строки.

Вот сравнение jsperf для этого, использование массива примерно на 80% медленнее, чем прямая конкатенация строки: https://jsperf.com/javascript-test-string-concat-vs-array/1

Таким образом, вы можете изменить свою функцию следующим образом:

function personNameChangedCallback(names){
 if(names.response.length > 0){
    var htmlOptions = '';

   for (var i = 0; i< names.response.length; i++) {
        htmlOptions += '<option>'+ names.response[i] +'</option>';
    }
 jQuery('[id=personNameSelected]').html(htmlOptions);
}

Причина, по которой он медленен в Internet Explorer, заключается в том, что его движок Javascript не так продвинут, как в других браузерах. Internet Explorer также будет иметь проблемы с прокруткой всех этих параметров. Использование поля для предложений, как уже было упомянуто кем-то другим, является лучшим вариантом, особенно когда ваше приложение должно быть совместимо с Internet Explorer.

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