何时在jquery中的ajax函数中使用async false和async true

时间:2013-08-21 19:34:16

标签: ajax jquery

何时使用在ajax调用中使用async false或async true。在性能方面它有什么不同?

示例:

$.ajax({
        url : endpoint,
        type : "post",
        async : false,
        success : function(data) {
                if (i==1){  
                getMetricData(data)}

                else if (i==2)
                {
                    capture = data;
                }

        }
    });

4 个答案:

答案 0 :(得分:33)

这与表现无关......

当您需要在浏览器传递给其他代码之前完成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>

答案 1 :(得分:5)

  1. 当异步设置设置为false时,将进行同步调用而不是异步调用。
  2. 当jQuery AJAX函数的异步设置设置为true时,将进行jQuery异步调用。 AJAX本身意味着异步JavaScript和XML,因此如果通过将async设置为false使其成为同步,它将不再是AJAX调用。
  3. for more information please refer this link

答案 2 :(得分:1)

如果你可以并行执行多项操作(没有相互依赖关系),那么最好去异步。 如果您需要它来完成继续加载下一个可以使用同步的东西,但请注意,不推荐使用此选项以避免滥用同步:

jQuery.ajax() method's async option deprecated, what now?

答案 3 :(得分:1)

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);
        }
    });
},

SetParamForToDoList函数触发后,ActionForm.EditActionFormPopup首先会被激活。