Я запрашиваю данные с сервера с функцией 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)
}