Node.js: Одновременные асинхронные xhr-запросы забивают друг друга? - PullRequest
0 голосов
/ 12 декабря 2018

Я запрашиваю данные с сервера с функцией requestBalances () ниже.Эта функция вызывается несколько раз подряд для запроса ежемесячных остатков.Ответ сервера затем обрабатывается функцией populateRows (), которая заполняет строку в таблице для каждого дня месяца.

Пока у меня синхронный вызов xhr.open () (как указано ниже)все работает нормально.Однако, если я сделаю это асинхронным (false arg -> true), это будет выглядеть как поле даты внутри populateRows (), которое начинает срываться и становится забитым.Что я тут не так делаю?

function requestBalances(date)
{
    var postData = { month: (date.getMonth() + 1), year: date.getFullYear() };
    var xhr = new XMLHttpRequest();
    xhr.open("POST", "/getBalances", false);
    xhr.setRequestHeader("Content-Type", "application/JSON; charset=UTF-8");
    xhr.onload = function(data) {
        if (( xhr.readyState === xhr.DONE) &&  (xhr.status === 200)) {
            populateRows(JSON.parse(xhr.response));
        };
    };
    xhr.send(JSON.stringify(postData));
}

function populateRows(response)
{
    var date = new Date(response.year, response.month - 1, 1);
    do {
        setBalanceForDate(date, response.startingBalance);
        date.setDate(date.getDate() + 1);
    } while (date.getDate() != 1)
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...