我正在尝试编写一个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中做。
答案 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);
}
}