Проблема здесь в том, что вы никогда не узнаете, когда закончите, из-за того, что это асинхронные запросы. Обычно я решаю проблему такого рода, когда создаю рекурсивные функции, поэтому в ответ вызывается одна и та же функция с другим параметром. сделать следующий запрос.
Я считал, что вы хотите сохранить в "responseHTML" ответ на все эти запросы.
Примерно так:
var link = 'https://swapi.co/api/planets/';
var responseHTML = "";
makeRequest(1,7,link);
function makeRequest(index,max,link)
{
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function() {
if (xhr.readyState === 4 && xhr.status === 200) {
var planets = JSON.parse(xhr.responseText);
responseHTML += '<p>';
for (i in planets.results) {
responseHTML += planets.results[i].name;
}
responseHTML += planets.results[1];
responseHTML += '</p>';
//console.log(planets.results.length);
}
if(index<=max)
{
link += '?page=' + i;
index++;
makeRequest(index++,max,link);
}
else
{
//This means I finished so I put the responseHTML and finish the code.
document.querySelector('main').innerHTML = responseHTML;
}
};
xhr.open('GET', link);
xhr.send();
}