何时在jquery的ajax函数中使用async false和async true
在ajax调用中何时使用async false或async true。在性能方面有什么区别吗 例如:何时在jquery的ajax函数中使用async false和async true,ajax,jquery,Ajax,Jquery,在ajax调用中何时使用async false或async true。在性能方面有什么区别吗 例如: $.ajax({ url : endpoint, type : "post", async : false, success : function(data) { if (i==1){ getMetricData(data)} el
$.ajax({
url : endpoint,
type : "post",
async : false,
success : function(data) {
if (i==1){
getMetricData(data)}
else if (i==2)
{
capture = data;
}
}
});
这与性能无关 当需要在浏览器传递到其他代码之前完成ajax请求时,可以将async设置为false:
<script>
// ...
$.ajax(... async: false ...); // Hey browser! first complete this request,
// then go for other codes
$.ajax(...); // Executed after the completion of the previous async:false request.
</script>
// ...
$.ajax(…异步:false…)//嘿,浏览器!首先完成这个请求,
//然后去其他代码
$.ajax(…);//在完成上一个async:false请求后执行。
如果您可以并行执行多个操作(无相互依赖),那么最好采用异步方式。
如果您需要它来继续加载下一个内容,您可以使用synchronous,但请注意,此选项已弃用,以避免滥用Synch:
在函数ActionForm之后,将首先执行SetParamForToDoList
。EditActionFormPopup
将启动
基本上,同步请求在允许任何代码处理继续之前等待从请求接收到响应。起初,这似乎是一件好事,但绝对不是 如前所述,当请求进行中时,浏览器将停止所有脚本的执行以及UI的呈现,因为大多数浏览器的JS引擎(实际上)是单线程的。这意味着对用户来说,浏览器将显示为无响应,他们甚至可能会看到操作系统级别的警告,表示程序没有响应,并询问他们是否应该结束其进程。正是由于这个原因,synchronous JS已被弃用,并且您会在devtools控制台中看到有关其使用的警告 到目前为止,异步请求的替代方案是更好的做法,应该尽可能始终使用。这意味着您需要知道如何使用回调和/或承诺,以便在异步请求完成时处理对它们的响应,以及如何构造JS以使用此模式。已经有很多资源可以用于这方面,所以我在这里不再赘述 很少有需要同步请求的情况。事实上,我唯一能想到的是在
beforeunload
事件处理程序中发出请求时,即使这样,也不能保证它能正常工作
总之。您应该学习并在所有请求中使用异步模式。同步请求现在是一种反模式,它会导致比它们通常解决的问题更多的问题。可能的重复:这不是性能问题。基本上,当您需要以某种特定方式(如异步或同步方式)执行代码或服务调用时,它非常有用。根据您的代码定义,在此代码之后,您定义了一些代码和ajax调用,使async选项为true,然后它将像异步一样执行。我想纠正一件事,ajax中的异步总是会影响性能,因为它总是像线程一样等待一个请求完成。
ShowPopUpForToDoList: function (id, apprId, tab) {
var snapShot = "isFromAlert";
if (tab != "Request")
snapShot = "isFromTodoList";
$.ajax({
type: "GET",
url: common.GetRootUrl('ActionForm/SetParamForToDoList'),
data: { id: id, tab: tab },
async:false,
success: function (data) {
ActionForm.EditActionFormPopup(id, snapShot);
}
});
},