var array = ['a', 'b', 'c'],
arrayLength = array.length,
completed = 0;
Затем в обратных вызовах вашего XHR,
if (completed == arrayLength) {
// All of them have finished.
}
completed++;
В качестве альтернативы, вы заявляете, что добавляете вещи в новый массив.Предполагая, что по окончании массивы будут иметь одинаковую длину, вы можете изменить проверку в обратном вызове на (startArray.length == newArray.length)
.
Кроме того, имейте в виду, если вы делаете XHR (предполагая асинхронный) в цикле, онивсе будут пытаться запросить примерно в одно и то же время (я думаю), что может быть проблемой с производительностью.Подумайте о том, чтобы написать функцию, которая вызывается снова при каждом обратном вызове каждого отдельного запроса, поэтому XHR создаются по одному за раз.Увеличьте счетчик, чтобы вы могли подписывать следующий элемент массива при каждом вызове.