在组合多个AJAX调用的结果后计算值的总和。

时间:2017-07-09 05:08:13

标签: javascript

我正在尝试编写一个JS函数来计算表中列中所有可见行的总和。 填充列中值的方法是进行多次ajax调用(一次50行)。

我正在尝试跟踪没有发送的请求,当我收到所有回复时,请计算总和。

function onClickofCalculateButton() {
    var noOfRequestsSent = 0;
    var sum = 0;

    var sucCallback = function(response) {
        updateColumn(response, noOfRequestsSent, sum);
    };

    //Some logic to send requests 50 rows a time and I increment the value of noOfRequestsSent;
}

在我的updateColumn函数()

function updateColumn(response, noOfRequestsSent, sum) {
    noOfRequestsSent--;
    //Do some logic to retrieve value of each row and add it to sum
    if(noOfRequestsSent == 0) {
        alert(sum);
    }
}

然而,正在发生的事情是,noOfRequestsSent的值总是等于请求的实际数量,即使在updateColumn函数中减去它之后也是如此。所以它永远不会达到noOfRequestsSent == 0的条件,并且总和也不会被添加到先前的值上。

我想我必须传递一些对象引用或类似C中的指针,但我无法弄清楚如何在JS中做。

1 个答案:

答案 0 :(得分:1)

你可以这样试试。因为你想发送变量作为参考。通过这种方式,您可以避免全局变量。

function onClickofCalculateButton() {
    var noOfRequests = {
                       sent:0
                       };
    var sum = 0;

    var sucCallback = function(response) {
        updateColumn(response, noOfRequests, sum);
    };

    //Some logic to send requests 50 rows a time and I increment the value of noOfRequestsSent;
}


function updateColumn(response, noOfRequestsSent, sum) {
    noOfRequests.sent--;
    //Do some logic to retrieve value of each row and add it to sum
    if(noOfRequests.sent == 0) {
        alert(sum);
    }
}