Похоже, что вы правы, что существует вероятность ошибочного упорядочения данных при множественных вызовах ajax (и вы очень умели это заметить, +1), с опубликованным кодом, который вы можете получить:
- AJAX вызов 1 начинается
- AJAX вызов 1 заканчивается
- добавляет первые 1000 элементов из вызова 1
- AJAX вызов 2 начинается
- добавляетследующие 1000 элементов из вызова 1
- ajax вызов 2 завершается
- добавляет первые 1000 элементов из вызова 2
- добавляет следующие 1000 элементов из вызова 1
Что касается вопроса производительности, помните, что «производительность» - это не одно. Если под производительностью вы подразумеваете «сколько времени занимает выполнение этого блока кода», то разбиение на части приведет к снижению производительности. Но это внешний интерфейс. «Производительность» - это действительно пользовательский опыт, и ваш код Javascript выполняется в главном потоке. Если у вас есть 10-секундная операция, то ваш интерфейс не отвечает в течение 10 секунд. Если вы разделите его на части, то пользователь все равно сможет взаимодействовать со страницей во время ее работы, даже если для ее завершения потребуется немного больше времени.