Javascript 在较慢的网络上,上一个Ajax请求会被下一个Ajax请求取消
我有以下问题:Javascript 在较慢的网络上,上一个Ajax请求会被下一个Ajax请求取消,javascript,ajax,xmlhttprequest,Javascript,Ajax,Xmlhttprequest,我有以下问题: 我试图模拟发送两个Ajax请求: function ajax() { xhr = new XMLHttpRequest(); xhr.onreadystatechange = function() { if(xhr.readyState == 4) console.log(xhr.responseText); } xhr.open('GET', 'list.html', true); xhr.send(''); }
我试图模拟发送两个Ajax请求:
function ajax()
{
xhr = new XMLHttpRequest();
xhr.onreadystatechange = function()
{
if(xhr.readyState == 4)
console.log(xhr.responseText);
}
xhr.open('GET', 'list.html', true);
xhr.send('');
}
ajax();
ajax();
问题是,他们中只有一个成功了如果我自己尝试使用DevTools,如果网络速度很高,它们都会被执行(当我在控制台中快速键入两次ajax()函数时),而如果我降低网络速度并再次快速键入它们,则只有一个成功。
为什么会这样?如何避免自动取消同步xhr请求?您应该使用一个局部变量来保存
XMLHttpRequest
。因为您使用的是全局变量,所以回调函数总是引用发送的第二个AJAX请求。因此,改变:
xhr = new XMLHttpRequest();
致:
然后,每个回调函数都将是一个闭包,引用发送的特定请求。是的,我输入错误,现在它可以工作了。但我只是简化了这个问题,我真正的问题是,我有一个对象,其中有一个方法,我在其中发出一个xhr请求,我使用var xhr,但我只执行了一个。可能有什么问题?URL参数是否相同?尝试添加缓存清除器,以防止缓存被使用。
var xhr = new XMLHttpRequest();