我需要在短时间内执行多个XMLHttpRequest。
在我使用jquery之前,我的代码如下所示,运行得很好(我没有以任何方式存储结果):
function doStats(){
var postData....
$.ajax({
url: url,
type: 'post',
data: postData,
dataType: "json"
}).done(function(response){
}).fail(function(jqXHR, textStatus, errorThrown) {
});
}
现在我已经转换为javascript,如果我在短时间内多次调用doStats,this. responseText会确保我的结果总是正确的,并且会创建xhrRequest_stat = new XMLHttpRequest();而不影响之前的那个
function doStats(){
var params...
xhrRequest_stat = new XMLHttpRequest();
xhrRequest_stat.onreadystatechange = function() {
if (xhrRequest_stat.readyState == 4) {
console.log(this.responseText)
}
}
xhrRequest_stat.onerror = function(e) {
console.log('Error getStats: ' + e);
};
xhrRequest_stat.open('POST', url);
xhrRequest_stat.setRequestHeader("Content-Type", 'application/x-www-form-urlencoded');
xhrRequest_stat.send(params);
}
因为我有时调用这个函数几次有时不调用,它没有真正的顺序,所以我不能真正使用for循环。
1条答案
按热度按时间vs91vp4v1#
在声明/初始化xhrRequest_stat变量时,必须添加“const”关键字。这样,每次调用该函数时,都能创建一个新的xhrRequest_stat变量。
如果要避免JavaScript中的副作用,函数中使用的变量必须位于函数的签名中(url,此处为):