Показать сообщение отдельно
  #1 (permalink)  
Старый 23.04.2018, 21:59
Интересующийся
Отправить личное сообщение для ar4ipers Посмотреть профиль Найти все сообщения от ar4ipers
 
Регистрация: 26.03.2018
Сообщений: 25

Callback javascript ajax
Здравствуйте, есть два запроса которые получают данные. использую XMLHttpRequest. Несмотря на то, что AJAX является асинхронной операцией, результаты запросов я хочу получить последовательно: сначала трёх пользователей, потом случайное число. Для этого пытаюсь использовать callback-и. Может ли объяснить мне как с ними работать?
window.onload = function () {
    document.querySelector("#callback").onclick = function () {
        const url = "https://randomuser.me/api?results=";
        let n = randomInteger(5, 10);
        ajaxGet(3, url + 3, getName);
        ajaxGet(n, url + n, getName);
    }
}

function getName(s, request) {
    let data = JSON.parse(request.responseText);
    for (let i in data.results) {
        document.getElementById("name").innerHTML += s + " " + data.results[i].name.first + " " + data.results[i].name.last + "<br>";
    }
}

function ajaxGet(s, url, callback) {
    let request = new XMLHttpRequest();
    request.onreadystatechange = function () {
        if (request.readyState == 4 && request.status == 200) {
            callback(s, this);
        }
    }
    request.open('GET', url);
    request.send();
}

function randomInteger(min, max) {
    var rand = min - 0.5 + Math.random() * (max - min + 1)
    rand = Math.round(rand);
    return rand;
}

Последний раз редактировалось ar4ipers, 23.04.2018 в 23:20.
Ответить с цитированием