AJAX 延迟下一行的执行



给定以下代码,谁能帮助我理解为什么第一个警报在第二个警报之后执行?我相信发生这种情况是因为 ajax 在获取数据之前有一小段延迟,如果我错了,请纠正我。提前谢谢。

Javascript代码:

window.onload = function() {
arry = new Array();
jQuery.ajax({    
type: "GET",
url: "index.php?op=17&id=@@postID@@&action=fetch",   
dataType: "text",
success: function(response){    
var e = response;
console.log(JSON.parse(e));
arry = JSON.parse(e)
alert(e); //1st alert
}
}); 
alert("test") //2nd alert
}

AJAX 中的第一个"A"代表异步。这意味着它不会在您的代码中阻塞,因此在 AJAX 请求之后立即调用alert('test'),而alert(e)仅在 AJAX 请求收到来自服务器的成功响应后调用。

您提到的"小延迟"不是这样的,而是服务器执行任何代码并返回响应所需的时间。

如果绝对需要同步处理请求,可以将async属性传递给 AJAX 调用,如下所示:

window.onload = function() {
var arry = [ ];
jQuery.ajax({    
type: "GET",
url: "index.php?op=17&id=@@postID@@&action=fetch",   
dataType: "json",
async: false
}).done(function(response) {
arry = response
alert(response); //1st alert
});
alert("test") //2nd alert
}

请注意,我已经对代码进行了一些更新,以使用done()承诺。此外,指定dataType: "json"无需对响应文本调用JSON.parse()

你的第一个数组位于AJAX调用的成功事件中,该事件(成功函数(只有在ajax调用的响应准备就绪时才会被注册、跳过和回调。

最新更新