Node.js:并发异步xhr请求互相阻塞?

时间:2018-12-12 04:39:18

标签: javascript node.js asynchronous xmlhttprequest

我正在使用下面的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)
}

0 个答案:

没有答案