我正在使用下面的requestBalances()函数从服务器请求数据。快速连续多次调用此功能以查询月度余额。然后,服务器响应由populateRows()函数处理,该函数在每月的每一天在表中填充一行。
只要我使xhr.open()调用同步(如下代码所示),一切正常。但是,如果我将其设为异步(false arg-> true),则populateRows()中的date字段似乎开始变得笨拙,并变得笨拙。我在这里做什么错了?
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)
}