所以标题有点说明会发生什么。我有一个 ajax 调用,如果成功,它会发送另一个调用,但问题是在调用完成之前它已经发送了另一个调用,并且 ajax 开始堆叠。我没有使用异步,而是使用php作为我的服务器语言。我的 ajax 也有 5 秒 = 5000 毫秒的超时。所以它轮询服务器,当它发生时它正在等待,然后 javascript 执行一个新的 ajax 调用,甚至在另一个返回信息之前。
所以这是我的 jquery ajax 调用
$.ajax({
url: ("json/getfriends.php"),
type: 'POST',
data: {friendlist: friendsarray},
async: false,
timeout: 5000,
dataType: 'json',
success: function(data){
$.each(data, function(i, val){
friendsarray.push(val);
});
setTimeout("friends();", 15000); //loops the ajax call
},
error: function(jqXHR, textStatus, errorThrown)
{
if (errorThrown['code'] == 101){
//time out, not data was received
setTimeout("friends();", 15000); //loops the ajax call
}
else
{
console.log(errorThrown);
}
}
});
所以我的问题是如何停止 ajax 堆叠在彼此之上,或者如何让一个 ajax 调用仅在另一个调用带回数据时才进行。